安装Windows扩展时出现值错误

27 投票
7 回答
36262 浏览
提问于 2025-04-16 09:53

我已经安装了 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。以下是我成功构建的步骤:

  1. 找到 vcvarsx86_amd64.bat 文件,通常在 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\x86_amd64 这个路径下(具体位置可能根据你的安装情况不同而不同)
  2. 打开命令提示符(cmd)
  3. 运行 SET VS90COMNTOOLS=%VS120COMNTOOLS% 这个命令(具体命令可能根据你的设置有所不同,可以参考 这个链接
  4. 运行 vcvarsx86_amd64.bat 文件
  5. 然后运行 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。

撰写回答