我下载并安装了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()
的源代码来看,它似乎无法从VS90COMNTOOLS
设置中找到vcvarsall.bat
文件,因为它要求包含vcvarsall.bat
的文件夹的名称为VC
productdir = os.path.join(toolsdir, os.pardir, os.pardir, "VC")
如何在不修改注册表或文件夹名的情况下使用编译器?
发布于 2015-05-16 23:30:07
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
简单,丑陋,但很有用。
请注意,微软不再允许您下载所需的Visual Studio2008 VC++构建工具,但可以在归档文件中找到该文件:https://web.archive.org/web/20210106040224/https://download.microsoft.com/download/7/9/6/796EF2E4-801B-4FC4-AB28-B59FBF6D907B/VCForPython27.msi
发布于 2014-10-04 23:38:50
我对这个包也有同样的问题,看起来他们并没有用干净的安装来测试它。
最后,我只是添加了一个键来创建COMPUTER\HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\9.0\Setup\VC
,然后添加了一个名为productdir
的字符串值,该值设置为我的vcvarsall.bat路径,与您的路径相同。
发布于 2014-11-30 13:51:09
在命令行中升级setuptools:
pip install --upgrade setuptools
高于6.0的最新版本的setuptools应该会自动检测Microsoft Visual C++编译器for Python2.7
https://stackoverflow.com/questions/26140192
复制相似问题