1

我在 64 位 Windows 8 上安装了 PyPy v1.9。我将包含 pypy.exe 二进制文件的文件夹添加到我的路径 (C:\Users\me\Documents\pypy-1.9),但是当我尝试运行 PyPy 时,我收到以下错误消息:

调试:警告:未找到库路径,使用已编译的 sys.path

调试:警告:不会设置“sys.prefix”。

调试:警告:确保 pypy 二进制文件保存在其文件树中。

调试:警告:可以从其他地方创建指向它的符号链接。

“导入站点”失败

Python 2.7.2(341e1e3821ff,2012 年 6 月 7 日,15:43:00)

[PyPy 1.9.0 与 MSC v.1500 32 位] 在 win32 上

输入“帮助”、“版权”、“信用”或“许可”以获取信息。

调试:操作错误:调试:

操作错误类型:ImportError

调试:操作错误值:没有名为 _pypy_interact 的模块

这只发生在尝试在其所在目录之外运行 PyPy 时。如果我直接运行 exe,命令提示符将打开并正确运行。

4

1 回答 1

1

我仍然不确定为什么会发生这种情况,但我确实找到了某种解决方案。我花了一点时间在通常保存 pypy.exe 的文件夹中创建了一个与 pypy 可执行文件(pypy.bat)同名的非常简单的批处理文件,并将 pypy.exe 重命名为 pypy_binary.exe(或其他任何东西,它其实没关系)。最重要的是,我提出了一个稍微笨拙的解决方法来将目录设置为我正在运行的文件所在的位置:将其作为参数传递给脚本。然后我检查一个参数,并切换到提供的目录 (os.chdir(sys.argv[1]))。

这是可能遇到此问题的任何其他人的批处理文件:

@echo off
set LAST=%CD%
pushd %~dp0
echo %LAST% > last.tmp
if "%1" == "" goto noargs

start /B /WAIT pypy_binary.exe "%LAST%\%1" "%LAST%"
goto finish

:noargs
start /B /WAIT pypy_binary.exe

:finish
popd

附带说明:如果您使用 pypy 运行使用 pyglet 的程序,则需要编辑 'pyglet/libs/win32/ __ init __.py' 第 192 到 196 行(大约)。在 pypy 下,元组没有__itemsize___属性,因此您需要输入 try/except,或者直接设置 '_user32.SetClassLongPtrW = _user32.SetClassLongW' 而无需 if/else。

于 2012-08-22T22:04:04.610 回答