[英]“pip install mysqlclient” throws error: Unable to find vcvarsall.bat
[英]pip install gives error: Unable to find vcvarsall.bat
在Windows 8和Python 2.7上使用pip install zipline
给我以下错误:
Downloading/unpacking six (from python-dateutil==2.1->delorean->zipline[all])
Running setup.py egg_info for package six
Installing collected packages: blist, pytz, requests, python-dateutil, six
Running setup.py install for blist
building '_blist' extension
error: Unable to find vcvarsall.bat
Complete output from command C:\Python27\python.exe -c "import setuptools;__
file__='c:\\users\\ThatsMe\\appdata\\local\\temp\\pip-build-ThatsMe\\blist\\setup.py';ex
ec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" inst
all --record c:\users\ThatsMe\appdata\local\temp\pip-xvoky2-record\install-record.tx
t --single-version-externally-managed:
running install
running build
running build_py
running build_ext
building '_blist' extension
error: Unable to find vcvarsall.bat
问题:如何解决错误? 运行pip install zipline[all]
会出现相同的错误...
这里的问题是$python_install_prefix/Lib/distutils/msvc9compiler.py
中的第292行(此处使用Python 3.4.3):
VERSION = get_build_version()
这只会检查您的Python所构建的MSVC版本。 只需用您的实际Visual Studio版本替换此行,例如。 适用于MSVC2013
12.0
VERSION = 12.0
将解决此问题。
更新:事实证明,对此版本进行硬编码是有充分的理由的。 不需要MSVC C运行时在主要版本之间兼容。 因此,当您使用其他VS版本时,可能会遇到运行时问题。 因此,我建议您使用VS 2008(适用于Python 2.6到3.2)以及VS2010(适用于Python 3.3和更高版本),直到解决此问题为止。
二进制兼容性将随VS 2015( 请参见此处 )以及Python 3.5一起提供。
对于Python 2.7用户,Microsoft发布了专用于Python 2.7的Microsoft Visual C ++编译器 ,可以在不安装整个VS 2008的情况下使用它。
您可以改用easy_install zipline
。
easy_install
不是pip,但它的一个优点是也可以下载和安装二进制程序包,这使您无需准备VC ++。 当然,这取决于二进制文件是为您的Python版本准备的。
更新:
是的,Pip现在可以安装二进制文件!
有一种新的二进制Python存档格式( wheel ),可以代替“鸡蛋”。 pip
已支持车轮。 这意味着一旦有人为您的平台构建了轮子并将其上传到PyPI,您就可以使用pip
安装zipline
而无需对其进行编译。
如果您在Python 2.7上遇到此错误,则现在可以作为独立下载获得适用于Python 2.7的Microsoft Visual C ++编译器 。
如果您使用的是3.3或更高版本,则需要安装Visual Studio 2010 Express,此版本可从此处免费下载: https : //www.visualstudio.com/downloads/download-visual-studio-vs#d-2010-express
如果您是3.3或更高版本,并且使用64位版本的python,则需要安装附带64位编译器的Microsoft SDK 7.1,并按照此处的说明进行操作。Python PIP在MS Visual Studio 2010 Express的64位安装路径中存在问题在Windows 7上
首先,您应该在系统中寻找文件vcvarsall.bat。
如果不存在,建议您安装适用于Python 2.7的Microsoft Visual C ++编译器 。 如果为所有用户安装了vcvarsall.bat,它将在“ C:\\ Program Files(x86)\\ Common Files \\ Microsoft \\ Visual C ++ for Python \\ 9.0”中创建vcvarsall.bat。
现在的问题出在C:/Python27/Lib/distutils/msvc9compiler.py模块中的函数find_vcvarsall(version)中,该函数正在寻找vcvarsall.bat文件。
在函数调用之后,您将看到它正在注册表中寻找包含vcvarsall.bat文件路径的条目。 它将永远找不到,因为此功能正在与上述安装位置不同的其他目录中查找,在我的情况下,注册表不存在。
解决此问题的最简单方法是手动返回vcvarsall.bat文件的路径。 为此,请使用vcvarsall.bat文件的绝对路径修改msvc9compiler.py文件中的功能find_vcvarsall(version) ,如下所示:
def find_vcvarsall(version):
return r"C:\Program Files (x86)\Common Files\Microsoft\Visual C++ for Python\9.0\vcvarsall.bat"
这个解决方案对我有用。
如果已经有了vcvarsall.bat文件,则应检查注册表中是否具有密钥productdir :
(HKEY_USERS,HKEY_CURRENT_USERS,HKEY_LOCAL_MACHINE或HKEY_CLASSES_ROOT)\\ Software \\ Wow6432Node \\ Microsoft \\ VisualStudio \\ version \\ Setup \\ VC
其中版本= msvc9compiler.get_build_version()
如果您没有密钥,请执行以下操作:
def find_vcvarsall(version):
return <path>\vcvarsall.bat
若要了解确切的行为,请从find_vcvarsall(version)函数开始检查msvc9compiler.py模块。
仅仅是因为您的计算机中没有安装c ++编译器,所以请检查以下内容
从此页面下载Microsoft Visual C ++ 2008。 无论如何,这通常是一个有用的页面,因此您应该将其添加为书签。 对于Python 3.3+,请使用MS Visual C ++ 2010 。 安装它。
打开Windows资源管理器(文件浏览器),搜索“ vcvarsall.bat”的位置并将其剪切到剪贴板。
从Windows开始键运行regedit。 您将需要管理员权限。
添加注册表项HKEY_LOCAL_MACHINE \\ SOFTWARE \\ Wow6432Node \\微软\\ VisualStudio的\\ 9.0 \\ SETUP \\ VC \\ ProductDir(64位Windows)或HKEY_LOCAL_MACHINE \\ SOFTWARE \\微软\\ VisualStudio的\\ 9.0 \\ SETUP \\描述VC \\ ProductDir(32位) 在这里 。
提示 :registery目录中的0.9是Visual Studio的当前安装版本,如果运行VS 2013,则必须找到路径HKEY_LOCAL_MACHINE \\ Software \\ Wow6432Node \\ Microsoft \\ VisualStudio \\ 12.0....。
在Windows开始键处,键入cmd以获取命令外壳。 如果需要,请转至虚拟环境并运行activate.bat。
pip install或用于安装它的任何工具。
您需要在路径中包含Visual Studio的bin目录。 Pip安装正在尝试编译一些C代码。
我也花了几个小时研究这个vcvarsall.bat。 SO的大多数答案都集中在Python 2.7和/或通过修改系统路径来创建解决方法。 没有人为我工作。 这个解决方案针对Python 3.5开箱即用,并且(我认为)是“正确”的实现方式。
请参阅此链接-它描述了可用于不同版本的Python的Windows编译器: https ://wiki.python.org/moin/WindowsCompilers#Microsoft_Visual_C.2B-.2B-_14.0_standalone: _Visual_C.2B-.2B- _Build_Tools_2015_.28x86.2C_x64.2C_ARM.29
对于Python 3.5,请下载以下文件: https : //www.microsoft.com/zh-cn/download/details.aspx?id=49983
对于我来说,我必须运行C:\\ Program Files(x86)\\ Microsoft Visual C ++生成工具\\ Visual C ++ x64本机生成工具命令提示符才能运行。 在该命令提示符下,我运行了“ pip install django_compressor”,这是导致我出现问题的特定软件包,并且运行良好。
希望这可以节省一些时间!
感谢“ msoliman”的提示,但是对于没有VS2010的用户,他的答案并未给出明确的解决方案
例如,我有VS2012和VS2013,并且系统注册表中没有此类KEY。
解:
编辑文件:“ [Python_install_loc] /Lib/distutils/msvc9compiler.py”
在第224行更改:
productdir = Reg.get_value(r"%s\Setup\VC" % vsbase,
"productdir")
至:
productdir = "C:\Program Files (x86)\Microsoft Visual Studio [your_vs_version(11/12...)]\VC"
那应该起作用
如果您尝试安装matplotlib以便在python上使用图形。 试试这个链接。 https://github.com/jbmohler/matplotlib-winbuild 这是一组脚本,可从MS Windows平台上的源代码构建matplotlib。
要在您的Python中构建和安装matplotlib,请执行以下操作:
git clone https://github.com/matplotlib/matplotlib
git clone https://github.com/jbmohler/matplotlib-winbuild
$ python matplotlib-winbuild\buildall.py
构建脚本将自动检测Python版本和32/64位。
我很欣赏这可能不是解决3.4的答案,但我尝试了多种方法将其修复为3.4,并认为如果有人时间紧迫或不知道如何纠正它,这可能会很有用。我的情况,工作要求)。
使用完全相同的设置,我发现我的安装问题仅发生在Python 3.4中。 当我更改为2.7时,我所有的问题似乎都已解决。
不过,我们的安全性设置过于狂热,因此我将在家庭版(仍为3.4版)上尝试相同的设置,看看是否还有更多乐趣。 我的倾向是我的VS版本受到了某种限制,上面的答案应该有所帮助。 如果今晚我发现更多东西,我将添加更多详细信息。
这是我的第一个回复,恐怕不是最技术性的!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.