pip安装给出错误:无法findvcvarsall.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]给出同样的错误…

你可以使用easy_install zipline来代替。

easy_install不是pip,但其中一个好的方面就是能够下载和安装二进制包,这将使您无需准备好VC ++。 这当然依赖于二进制文件为您的Python版本准备的假设。

更新:

是的,Pip现在可以安装二进制文件!

有一个新的Python二进制档案格式( 轮 )应该取代“鸡蛋”。 车轮已经支持pip 。 这意味着,只要有人为您的平台build立轮子并将其上传到PyPI,就可以在不编译pip情况下使用pip安装zipline。

这里的问题是$python_install_prefix/Lib/distutils/msvc9compiler.py中的第292行(在这里使用Python 3.4.3):

 VERSION = get_build_version() 

这只会检查你的python是使用的MSVC版本。 只需用您的实际Visual Studio版本replace此行,例如。 对于MSVC2013MSVC2013

 VERSION = 12.0 

将解决这个问题。

更新:原来这个版本是硬编码有一个很好的理由。 主要版本之间不要求MSVC C运行时兼容。 因此,当您使用不同的VS版本时,可能会遇到运行时问题。 所以我build议使用VS 2008(Python 2.6到3.2)和VS2010(Python 3.3和更高版本),直到解决这个问题。

二进制兼容性将与VS 2015( 见这里 )和Python 3.5一起到来。

对于Python 2.7用户,微软发布了一个特殊的Microsoft Visual C ++编译器for Python 2.7 ,可以在不安装整个VS 2008的情况下使用。

如果您在Python 2.7上遇到此错误,您现在可以将Microsoft Visual C ++编译器for Python 2.7作为独立下载。

如果您使用的是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具有用于64位安装的MS Visual Studio 2010 Expresspath的问题在Windows 7上

首先,您应该在系统中查找文件vcvarsall.bat。

如果它不存在,我build议您安装Microsoft Visual C ++编译器for Python 2.7 。 如果为所有用户安装,将在“C:\ Program Files(x86)\ Common Files \ Microsoft \ Visual C ++ for Python \ 9.0”中创buildvcvarsall.bat。

现在的问题是在C:/Python27/Lib/distutils/msvc9compiler.py模块中findvcvarsall.bat文件的函数find_vcvarsall(version)

在函数调用之后,您会看到它正在registry中查找包含vcvarsall.bat文件path的条目。 它永远不会find它,因为这个函数正在查找与上述安装位置不同的其他目录,在我的情况下,registry不存在。

解决此问题的最简单方法是手动返回vcvarsall.bat文件的path。 为此,请修改msvc9compiler.py文件中的函数find_vcvarsall(version) ,使用vcvarsall.bat文件的绝对path,如下所示:

 def find_vcvarsall(version): return r"C:\Program Files (x86)\Common Files\Microsoft\Visual C++ for Python\9.0\vcvarsall.bat" 

这个解决scheme为我工作。

如果您已经拥有vcvarsall.bat文件,则应该检查registry中是否有关键的productdir

(HKEY_USERS,HKEY_CURRENT_USERS,HKEY_LOCAL_MACHINE或HKEY_CLASSES_ROOT)\ Software \ Wow6432Node \ Microsoft \ VisualStudio \ version \ Setup \ VC

其中version = 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资源pipe理器(文件浏览器)并search“vcvarsall.bat”的位置并将其剪切到剪贴板。

  • 从Windows启动键运行registry编辑器。 您将需要pipe理员权限。

  • 将registry项添加到HKEY_LOCAL_MACHINE \ Software \ Wow6432Node \ Microsoft \ VisualStudio \ 9.0 \ Setup \ VC \ ProductDir(64位Windows)或HKEY_LOCAL_MACHINE \ Software \ Microsoft \ VisualStudio \ 9.0 \ Setup \ VC \ ProductDir(32位) 。

提示 :注册目录中的0.9是你的Visual Studio的当前安装版本,如果你运行VS 2013,你必须findpathHKEY_LOCAL_MACHINE \ Software \ Wow6432Node \ Microsoft \ VisualStudio \ 12.0 ….

  • 在Windows开始键上,键入cmd以获得命令shell。 如果需要,请转到您的虚拟环境并运行activate.bat。

  • 点安装或任何你用来安装它。

你需要在你的path中有Visual Studio的bin目录。 PIP安装试图编译一些C代码。

我花了几个小时研究这个vcvarsall.bat。 SO的大部分答案都集中在Python 2.7和/或通过修改系统path来创build解决方法。 没有为我工作。 这个解决scheme为Python 3.5开箱即用,(我认为)是这样做的“正确”方式。

  1. 查看这个链接 – 它描述了用于不同版本的Python的Windows编译器: https ://wiki.python.org/moin/WindowsCompilers#Microsoft_Visual_C.2B-.2B-_14.0_standalone: _Visual_C.2B-.2B- _Build_Tools_2015_.28×86.2C_x64.2C_ARM.29

  2. 对于Python 3.5,请下载: https : //www.microsoft.com/en-us/download/details.aspx?id=49983

  3. 对于我来说,我必须运行C:\ Program Files(x86)\ Microsoft Visual C ++ Build Tools \ Visual C ++ x64本机构build工具命令提示符才能正常工作。 从该命令提示符下,我运行了“pip install django_compressor”,这是造成我一个问题的特定软件包,并且运行得非常完美。

希望这可以节省一些时间!

感谢“msoliman”的提示,但是他的回答并没有给那些没有VS2010的人提供明确的解决scheme
例如,我有VS2012和VS2013系统registry中没有这样的密钥。

解:
编辑文件:“ [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平台上从源代码构buildmatplotlib的脚本。

要在Python中构build和安装matplotlib,请执行以下操作:

 git clone https://github.com/matplotlib/matplotlib git clone https://github.com/jbmohler/matplotlib-winbuild $ python matplotlib-winbuild\buildall.py 

构build脚本将自动检测Python版本&32/64位。

我很欣赏这可能不是解决3.4的答案,但是我尝试了很多种方法来解决这个问题,并且认为如果有人被时间紧迫或者没有专业知识来纠正它(在我的情况,工作要求)。

使用完全相同的设置,我发现我的安装问题只发生在Python 3.4中。 当我改为2.7时,我所有的问题似乎都解决了。

我们有一个相当过分的安全设置,所以我会在我的家庭版本(也就是3.4)上尝试一下,看看我是否还有更多的喜悦。 我的倾向是,我的VS版本已经被限制,上面的答案应该有所帮助。 如果今晚我find更多的东西,我会补充一些细节。

这是我的第一个答复,而不是我最害怕的技术!