如果您还没有安装 VS 2008,请不要安装。
如果您已经安装了 VS 2008 并且无法获得要编译的扩展,我将卸载 VS 2008 并删除它的目录在程序文件下。问题可能是 express 版本不附带 64 位编译器。
要获取编译扩展文件,请从以下位置安装适用于 Windows 的 Python 2.7 编译器
http://www.microsoft.com/en-gb/download/details.aspx?id=44266
说明说需要 setuptools 6.0,但即使更新后我也无法让它工作。
安装编译器后,找到包含 vcvarsall.bat 的目录。对我来说是
C:\Users\MY_USER_NAME\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0
在那里打开powershell并运行.\vcvarsall.bat amd64
如果你看到这个:
PS C:\Users\MY_USER_NAME\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0> .\vcvarsall.bat amd64
Setting environment for using Microsoft Visual Studio 2008 x64 tools.
一切都好。
接下来的步骤很奇怪但必不可少,并在最后进行了解释。将目录 9.0 重命名为 VC。
添加环境变量 VS90COMNTOOLS 并将值设置为 bin 目录的路径,现在应该是:
C:\Users\MY_USER_NAME\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\VC\VC\bin
现在应该一切正常了。去在一个扩展文件上测试它:
python setup.py build_ext --inplace
9.0为什么要重命名为VC?进入你的python安装目录,找到distutils目录:python_base_dir\Lib\distutils
在您选择的文本编辑器中打开 msvc9compiler.py 并找到第 247 行。
productdir = os.path.join(toolsdir, os.pardir, os.pardir, "VC")
这意味着 distutils 将简单地导航到您添加的环境变量,上两层然后下到 VC 文件,希望找到 vcvarsall.bat。
您可以编辑此文件作为重命名 9.0 -> VC 的替代方法,但我认为那是“更脏”。
还要注意不需要 VS 2008 目录的原因是第 242 行:
if not productdir or not os.path.isdir(productdir):
如果目录被删除,它将忽略 VS 2008 的旧注册表项。