pip install给出错误:无法找到vcvarsall.bat

时间:2013-11-07 08:19:41

标签: python python-2.7 pip zipline

在Windows 8上使用pip install zipline和Python 2.7给出错误:

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]会出现同样的错误......

10 个答案:

答案 0 :(得分:59)

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

VERSION = get_build_version()

这只检查构建python的MSVC版本。只需用您的实际Visual Studio版本替换此行,例如。 12.0

MSVC2013
VERSION = 12.0

将解决问题。

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

二进制兼容性将随VS 2015(see here)以及Python 3.5一起提供。

对于Python 2.7用户,Microsoft发布了一个特殊的Microsoft Visual C++ Compiler for Python 2.7,无需安装整个VS 2008即可使用。

答案 1 :(得分:23)

您可以使用ol'good easy_install zipline代替。

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

更新:

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

有一种新的二进制Python归档格式(wheel)应该取代“egg”。 pip已经支持轮子。这意味着只要有人为您的平台构建了轮子并将其上传到PyPI,您就可以使用zipline安装pip而无需编译它。

答案 2 :(得分:8)

如果您在Python 2.7上收到此错误,现在可以将Microsoft Visual C++ Compiler 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 has issues with path for MS Visual Studio 2010 Express for 64-bit install on Windows 7

答案 3 :(得分:7)

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

如果它不存在,我建议您安装Microsoft Visual C++ Compiler for Python 2.7。这将在" 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(版本)函数中检查 msvc9compiler.py 模块。

答案 4 :(得分:3)

只是因为您的计算机上没有安装c ++编译器,请查看以下内容

  • 从此page下载Microsoft Visual C ++ 2008。无论如何,这是一个非常有用的页面,所以你应该将它加入书签。对于Python 3.3+,请使用MS Visual C++ 2010。 安装它。

  • 打开Windows资源管理器(文件浏览器)并搜索“vcvarsall.bat”的位置并将其剪切到剪贴板。

  • 从Windows启动键运行regedit。您将需要管理员权限。

  • 添加注册表项 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位) 如上所述here

提示:注册目录中的0.9是当前安装的visual studio版本,如果运行VS 2013,则必须找到路径HKEY_LOCAL_MACHINE \ Software \ Wow6432Node \ Microsoft \ VisualStudio \ 12.0 ....

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

  • pip install或用于安装它的任何内容。

答案 5 :(得分:2)

您需要在路径中安装Visual Studio的bin目录。 Pip install正在尝试编译一些C代码。

答案 6 :(得分:1)

我花了几个小时研究这个vcvarsall.bat。 SO上的大多数答案都集中在Python 2.7和/或通过修改系统路径来创建变通方法。没有人为我工作。这个解决方案开箱即用,适用于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_.28x86.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 Native Build Tools命令提示它才能工作。从那个命令提示符开始,我运行了“pip install django_compressor”,这是导致我出现问题的特殊软件包,并且运行良好。

  4. 希望这能节省一些时间!

答案 7 :(得分:0)

感谢“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"

这应该有用

答案 8 :(得分:0)

如果您正在尝试安装matplotlib以便在python上使用图形。试试这个链接。 https://github.com/jbmohler/matplotlib-winbuild。 这是一组脚本,用于在MS Windows平台上从源代码构建matplotlib。

建立&amp;在你的Python中安装matplotlib,执行:

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

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

答案 9 :(得分:0)

我很欣赏这可能不是解决3.4的答案,但我尝试了很多东西来解决这个问题,并认为如果有人按时或者没有专业知识来解决这个问题可能会有用它(在我的情况下,工作要求)。

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

我们有一个相当过分热心的安全设置,所以我将在我的家庭版本(仍然是3.4)尝试相同,看看我是否有更多的快乐。我的倾向是我的VS版本在某种程度上受到限制,上面的答案应该有所帮助。如果今晚我发现更多信息,我会进一步详细说明。

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