为什么在Windows Vista 64上用Python 2.7和easy_install安装Pylons 1.0时最后一行出错?
我尝试在Windows Vista 64上用Python 2.7通过easy_install命令安装Pylons 1.0,但遇到了以下错误:
raise ValueError(str(list(result.keys())))
ValueError: [u'path']
这里有一个链接,里面是从命令提示符进行整个安装过程的记录: http://pastie.org/1190341
- 我为什么会遇到这个错误?
- 我该如何解决这个问题?
- 尽管出现了这个错误,Pylons还能正常工作吗?
5 个回答
如果你安装了64位的Visual Studio,可以在开始菜单的Visual Studio工具里找到cmd工具。这个工具会帮你设置好环境。
在Pylons的讨论列表中提到了一种解决方法:
这个方法有点旧(2008年),但因为你粘贴的输出显示在编译simplejson时出现了问题,所以这个信息可能对你有帮助。你可以试着按照那里的建议操作,看看是否能解决你的问题。
从这个错误信息来看:
File "C:\Python27\Lib\distutils\msvc9compiler.py", line 295, in q
uery_vcvarsall
raise ValueError(str(list(result.keys())))
ValueError: [u'path']
distutils在寻找一个叫做vcvarsall.bat的文件。它会运行这个文件,从中获取包含文件和库文件的目录。这个批处理文件会根据你提供的平台来设置环境。
vcvarsall.bat应该在类似这样的目录下:C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC
你需要创建以下目录:
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64\ C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64\vcvarsamd64.bat
在vcvarsamd64.bat文件中,添加以下内容:
call "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64 /Release
以上所有步骤都是为了设置Windows的工具链,以便与distutils一起工作。虽然你可能安装了64位的Python,但大多数在pypi上提供的包都是32位的预编译版本。distutils需要使用你的编译工具链来构建64位的扩展。这就是这些步骤的意义所在。
请查看:
vcvarsamd64.bat和其他批处理文件的作用是设置库、工具等的路径,以便distutils可以使用。
[编辑:在v6中找不到setenv.cmd]
https://serverfault.com/questions/114998/vista-cmd-shell-thinks-its-windows-server-2008-debug