我已下载Microsoft Visual C++ Compiler for Python 2.7并安装它,vcvarsall.bat
的完整路径为:
C:\Users\UserName\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\vcvarsall.bat
但是以下代码无法返回它的路径:
from distutils import msvc9compiler
msvc9compiler.find_vcvarsall(9.0)
安装程序不会将安装信息写入注册表,并且从find_vcvarsall()
的源代码,它似乎无法从vcvarsall.bat
设置中找到VS90COMNTOOLS
文件,因为它要求包含vcvarsall.bat
的文件夹的名称为VC
:
productdir = os.path.join(toolsdir, os.pardir, os.pardir, "VC")
如何在不修改注册表或文件夹名称的情况下使用编译器?
答案 0 :(得分:24)
将setuptools更新为6.0或更高版本。在那些版本中,setuptools可以使用 vcvarsall.bat 自动检测Microsoft Visual C ++ Compiler for Python 2.7。
请参阅:
答案 1 :(得分:22)
查看您要安装的软件包的setup.py
文件。如果是旧版软件包,则可能导入distutils.core.setup()
而不是setuptools.setup()
。
我参与了这个(2015年),结合了以下因素:
来自http://aka.ms/vcpython27的Microsoft Visual C ++编译器Python 2.7
使用distutils.core.setup()
尝试python setup.py build
而不是pip
。
如果你使用最新版本的pip,它会强制(monkeypatch)包使用setuptools,即使它的setup.py
调用了distutils。但是,如果您不使用pip,而只是执行python setup.py build
,则构建过程将使用distutils.core.setup()
,它不知道编译器的安装位置。
步骤1:打开相应的Visual C ++ 2008命令提示符
打开“开始”菜单或“开始”屏幕,然后搜索" Visual C ++ 2008 32位命令提示符" (如果你的python是32位)或" Visual C ++ 2008 64位命令提示符" (如果你的python是64位)。运行。命令提示符应该在标题栏中显示Visual C ++ 2008 ....
第2步:设置环境变量
在刚刚打开的命令提示符中设置这些环境变量。
SET DISTUTILS_USE_SDK=1
SET MSSdk=1
参考http://bugs.python.org/issue23246
第3步:构建并安装
cd
到您要构建的包,然后运行python setup.py build
,然后python setup.py install
。如果要安装到virtualenv中,请在构建之前将其激活。
答案 2 :(得分:8)
Christian Long提供了切实可行的解决方案。但是如果你不想每次都在“Visual C ++ 2008 32位/ 64位命令”中修改它,你可以简单地找到“vcvarsall.bat”的位置,即“C:\ Users \ UserName \ AppData” \ Local \ Programs \ Common \ Microsoft \ Visual C ++ for Python \ 9.0 \ vcvarsall.bat“,然后在Python27 \ Lib \ distutils \ msvc9compiler.py中修改find_vcvarsall(版本)函数
像这样:def find_vcvarsall(version):
productdir= "C:/Users/UserName/AppData/Local/Programs/Common/Microsoft/Visual C++ for Python/9.0"
vcvarsall = os.path.join(productdir, "vcvarsall.bat")
if os.path.isfile(vcvarsall):
return vcvarsall
else:
return None
简单,丑陋但有用。
答案 3 :(得分:5)
我对这个软件包有同样的问题,看起来他们并没有真正用干净的安装来测试它。
最后我添加了一个用于创建COMPUTER\HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\9.0\Setup\VC
的密钥,然后我添加了一个名为productdir
的字符串值,其值设置为我的vcvarsall.bat路径,与您的路径相同
答案 4 :(得分:4)
在命令行中升级setuptools:
pip install --upgrade setuptools
6.0以上的setuptools的最新版本应该自动检测用于Python 2.7的Microsoft Visual C ++编译器
答案 5 :(得分:-1)
您只需要这个链接: https://www.microsoft.com/en-us/download/details.aspx?id=44266
无需升级或修改路径变量或其他任何内容。