尝试构建基本的Python扩展示例失败(windows)
我在一台运行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 个回答
我建议你不要安装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安装错误
如果你在使用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系统。