安装Windows扩展时出现值错误
我已经安装了 Microsoft Visual Studio 2008。我下载了一个压缩文件,里面是Windows 上的 Python 扩展,然后把里面的内容解压到了我的 Python27 文件夹里。现在这个文件夹里有一个叫 pywin32-214 的子文件夹。(这个 32 是不是有什么问题?我用的是 64 位系统。)以下是我在命令行中的输出:
C:\Python27\pywin32-214>setup.py -q install
Building pywin32 2.7.214.0
Traceback (most recent call last):
File "C:\Python27\pywin32-214\setup.py", line 2152, in <module>
('', ('pywin32.pth',)),
File "C:\Python27\lib\distutils\core.py", line 152, in setup
dist.run_commands()
File "C:\Python27\lib\distutils\dist.py", line 953, in run_commands
self.run_command(cmd)
File "C:\Python27\lib\distutils\dist.py", line 972, in run_command
cmd_obj.run()
File "C:\Python27\pywin32-214\setup.py", line 1251, in run
install.run(self)
File "C:\Python27\lib\distutils\command\install.py", line 563, in run
self.run_command('build')
File "C:\Python27\lib\distutils\cmd.py", line 326, in run_command
self.distribution.run_command(command)
File "C:\Python27\lib\distutils\dist.py", line 972, in run_command
cmd_obj.run()
File "C:\Python27\pywin32-214\setup.py", line 596, in run
build.run(self)
File "C:\Python27\lib\distutils\command\build.py", line 127, in run
self.run_command(cmd_name)
File "C:\Python27\lib\distutils\cmd.py", line 326, in run_command
self.distribution.run_command(command)
File "C:\Python27\lib\distutils\dist.py", line 972, in run_command
cmd_obj.run()
File "C:\Python27\lib\distutils\command\build_ext.py", line 340, in run
self.build_extensions()
File "C:\Python27\pywin32-214\setup.py", line 858, in build_extensions
self.compiler.initialize()
File "C:\Python27\lib\distutils\msvc9compiler.py", line 383, in initialize
vc_env = query_vcvarsall(VERSION, plat_spec)
File "C:\Python27\lib\distutils\msvc9compiler.py", line 299, in query_vcvarsal
l
raise ValueError(str(list(result.keys())))
ValueError: [u'path']
我不知道该怎么理解这些。有人能帮忙吗?
7 个回答
9
如上所述,这里是在尝试用32位的编译器来处理64位的Python。以下是我成功构建的步骤:
- 找到
vcvarsx86_amd64.bat
文件,通常在C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\x86_amd64
这个路径下(具体位置可能根据你的安装情况不同而不同) - 打开命令提示符(cmd)
- 运行
SET VS90COMNTOOLS=%VS120COMNTOOLS%
这个命令(具体命令可能根据你的设置有所不同,可以参考 这个链接) - 运行
vcvarsx86_amd64.bat
文件 - 然后运行
pip install <package>
来安装你需要的包
20
这个问题出现的另一个可能原因是,你刚安装了Visual Studio,而你正在使用的命令提示符是安装之前就存在的。
这是因为MSVC安装程序会设置一些环境变量,其中一个变量(VS90COMNTOOLS)必须正确设置,才能让vcvarsall.bat正常运行。但是,在Windows中,每个运行的程序都有自己的环境变量副本,这些副本是从父进程继承过来的。当子进程启动后,它就不会再接收到系统级别环境变量的任何更改。想要获取更新后的环境变量,唯一的方法就是启动一个新的子进程,而这个新进程的父进程必须是已经更新了环境变量的。
17
如果你安装的是64位的Python:
请安装“Microsoft Visual Studio 2008专业版”,并确保选择了“X64编译器和工具”这个选项。
另外,你也可以从http://sourceforge.net/projects/pywin32/files/pywin32/Build%20214/下载pywin32-214.win-amd64-py2.7.exe。