50

pip install zipline在带有 Python 2.7 的 Windows 8 上使用会给我错误:

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

4

10 回答 10

58

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

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(参见此处)和 Python 3.5 一起到来。

对于 Python 2.7 用户,微软为 Python 2.7 发布了一个特殊的Microsoft Visual C++ 编译器,无需安装整个 VS 2008 即可使用。

于 2014-04-30T20:20:30.553 回答
23

你可以用 ol' goodeasy_install zipline代替。

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

更新:

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

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

于 2013-11-07T08:46:03.917 回答
9

If you are getting this error on Python 2.7 you can now get the Microsoft Visual C++ Compiler for Python 2.7 as a stand alone download.

If you are on 3.3 or later you need to install Visual Studio 2010 express which is available for free here: https://www.visualstudio.com/downloads/download-visual-studio-vs#d-2010-express

If you are 3.3 or later and using a 64 bit version of python you need to install the Microsoft SDK 7.1 that ships a 64 bit compiler and follow the directions here Python PIP has issues with path for MS Visual Studio 2010 Express for 64-bit install on Windows 7

于 2015-03-07T03:39:06.427 回答
7

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

如果不存在,我建议您安装Microsoft Visual C++ Compiler for Python 2.7。如果您为所有用户安装 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模块。

于 2015-02-05T23:08:02.433 回答
3

仅仅因为您的机器上没有安装 c++ 编译器,请检查以下内容

  • 从此页面下载 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 位),如此所述.

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

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

  • pip install 或任何你用来安装它的东西。

于 2014-02-24T18:13:59.200 回答
2

You need to have Visual Studio's bin dir in your path. Pip install is trying to compile some C code.

于 2013-11-07T08:30:49.760 回答
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 Command Prompt 才能工作。从该命令提示符处,我运行了“pip install django_compressor”,这是导致我出现问题的特定软件包,并且运行良好。

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

于 2016-03-23T20:48:43.673 回答
0

我很欣赏这可能不是解决 3.4 的答案,但我尝试了各种各样的方法来解决 3.4 上的问题,并认为如果有人时间紧迫或不知道如何纠正它(在我的情况,工作需要)。

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

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

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

于 2015-04-10T17:16:50.513 回答
0

如果您尝试安装 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 位。

于 2014-12-30T12:07:42.157 回答
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"

那应该可以

于 2014-04-29T10:47:06.177 回答