我在Windows 8,64位上安装了PyPy v1.9。我将具有pypy.exe二进制文件的文件夹添加到我的路径(C:\ Users \ me \ Documents \ pypy-1.9),但是当我尝试运行PyPy时,我收到以下错误消息:
debug:警告:找不到库路径,使用已编译的sys.path
debug:警告:'sys.prefix'不会被设置。
debug:警告:确保pypy二进制文件保存在其文件树中。
debug:警告:可以从其他地方创建一个符号链接。
'导入网站'失败
Python 2.7.2(341e1e3821ff,2012年6月7日,15:43:00)
在win32上[PyPy 1.9.0与MSC v.1500 32位]
输入“帮助”,“版权”,“信用”或“许可证”以获取信息。
debug:OperationError:debug:
operror-type:ImportError
debug:operror-value:没有名为_pypy_interact的模块
只有在尝试在它所在的目录之外运行PyPy时才会发生这种情况。如果我直接运行exe,命令提示符将打开并正确运行。
答案 0 :(得分: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。