尝试构建基本的Python扩展示例失败(windows)

2 投票
2 回答
2567 浏览
提问于 2025-04-16 09:38

我在一台运行Windows 7 64位的电脑上,使用的是Python 2.6和Visual Studio 2008。
当我尝试在C语言中构建一个基本的Python扩展示例“example_nt”,这个示例在Python 2.6的源代码中可以找到时,出现了错误:

python setup.py build

然后结果是:

running build
running build_ext
building 'aspell' extension
Traceback (most recent call last):
  File "setup.py", line 7, in <module>
    ext_modules = [module1])
  File "C:\Python26\lib\distutils\core.py", line 152, in setup
    dist.run_commands()
  File "C:\Python26\lib\distutils\dist.py", line 975, in run_commands
    self.run_command(cmd)
  File "C:\Python26\lib\distutils\dist.py", line 995, in run_command
    cmd_obj.run()
  File "C:\Python26\lib\distutils\command\build.py", line 134, in run
    self.run_command(cmd_name)
  File "C:\Python26\lib\distutils\cmd.py", line 333, in run_command
    self.distribution.run_command(command)
  File "C:\Python26\lib\distutils\dist.py", line 995, in run_command
    cmd_obj.run()
  File "C:\Python26\lib\distutils\command\build_ext.py", line 343, in run
    self.build_extensions()
  File "C:\Python26\lib\distutils\command\build_ext.py", line 469, in build_extensions
self.build_extension(ext)
  File "C:\Python26\lib\distutils\command\build_ext.py", line 534, in build_extension
depends=ext.depends)
  File "C:\Python26\lib\distutils\msvc9compiler.py", line 448, in compile
self.initialize()
  File "C:\Python26\lib\distutils\msvc9compiler.py", line 358, in initialize
    vc_env = query_vcvarsall(VERSION, plat_spec)
  File "C:\Python26\lib\distutils\msvc9compiler.py", line 274, in query_vcvarsall
raise ValueError(str(list(result.keys())))
ValueError: [u'path']

我该怎么做才能解决这个问题呢?任何帮助都会很感激。

2 个回答

0

我建议你不要安装Windows SDK和VS 2008。

我觉得你遇到的问题是因为VS 2008没有64位的编译器。要检查这个问题,先找到你的vcvarsall.bat文件(可以在VS 2008的目录下找,路径是C:\Program Files (x86)\Microsoft Visual Studio 9.0)。找到vcvarsall.bat后,在这个文件所在的目录打开命令提示符,然后输入.\vcvarsall.bat amd64。如果这不是问题,你会看到Setting environment for using Microsoft Visual Studio 2008 x64 tools.这句话。如果是问题的话,你会收到一条关于配置的消息。这是个简单的修复。

VS的精简版没有64位的编译器。解决办法是安装SDK,但这会比较麻烦而且不太可靠,所以微软提供了一个包含所有编译器的单独下载链接:http://www.microsoft.com/en-gb/download/details.aspx?id=44266

下载完编译器后,如果直接使用不成功,可以参考我在这里的帖子: pyusb 2.7 windows安装错误

3

如果你在使用Win7 64位的电脑,并且想要安装Python 2.6(64位),你需要先安装
微软的Windows 7 SDK和.NET Framework 3.5 SP1。
具体的安装步骤可以参考这里:
http://wiki.cython.org/64BitCythonExtensionsOnWindows

商业版的Visual Studio 2008适用于Python 2.6、2.7和2.8,前提是你的电脑是32位的x86系统。

撰写回答