繁体   English   中英

pip安装出现错误:无法找到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开箱即用,并且(我认为)是“正确”的实现方式。

  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/zh-cn/download/details.aspx?id=49983

  3. 对于我来说,我必须运行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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM