Python Pip 安装错误:找不到 vcvarsall.bat。尝试了所有解决方案[重复]

Posted

技术标签:

【中文标题】Python Pip 安装错误:找不到 vcvarsall.bat。尝试了所有解决方案[重复]【英文标题】:Python Pip install Error: Unable to find vcvarsall.bat. Tried all solutions [duplicate] 【发布时间】:2015-02-24 13:07:49 【问题描述】:

我尝试使用

为 Python 2.7.8 (anaconda 2.1.0) 32 位安装 Scrapy
pip install scrapy

我得到了这个错误

 error: Microsoft Visual C++ 10.0 is required (Unable to find vcvarsall.bat).

我已遵循这些 stackover flow 问题中的解决方案。没有任何效果。

Microsoft Visual C++ Compiler for Python 2.7

Can't find vcvarsall.bat file

error: Unable to find vcvarsall.bat

Getting "error: Unable to find vcvarsall.bat" when running "pip install numpy" on windows7 64bit

pip install gives error: Unable to find vcvarsall.bat

How do I point easy_install to vcvarsall.bat?

pip install mysql-python returns unable to find vcvarsall.bat

这是错误,上下几行:

copying src\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\readme.txt
-> build\lib.win32-3.4\lxml\isoschematron\resources\xsl\iso-schematron-xslt1

running build_ext

building 'lxml.etree' extension

C:\Python34\lib\distutils\dist.py:260: UserWarning: Unknown distribution opt
ion: 'bugtrack_url'

  warnings.warn(msg)

error: Microsoft Visual C++ 10.0 is required (Unable to find vcvarsall.bat).


----------------------------------------
Command "C:\Python34\python.exe -c "import setuptools, tokenize;__file__='C:
\\Users\\San\\AppData\\Local\\Temp\\pip-build-wp6ei6r9\\lxml\\setup.py';exec(com
pile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __f
ile__, 'exec'))" install --record C:\Users\San\AppData\Local\Temp\pip-kfkzr_67-r
ecord\install-record.txt --single-version-externally-managed --compile" failed w
ith error code 1 in C:\Users\San\AppData\Local\Temp\pip-build-wp6ei6r9\lxml

我有 Microsoft Visual Studio 12.0 和适用于 Python 2.7 的 Microsoft Visual C++ 编译器包,它们都有 vcvarsall.bat 文件。


我有一个名为“VS120COMNTOOLS”的系统变量,它的路径设置为

C:\Program Files\Microsoft Visual Studio 12.0\Common7\Tools\

我还将两个路径都添加到了我的环境变量中。我也试过只添加一个,然后添加另一个。我的路径是这样的

C:\Program Files\Java\jdk1.7.0_25\bin;\Python27;\Python2\python.exe;C:\Python27\Scripts\;C:\Users\San\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\;C:\Program Files\Microsoft Visual Studio 12.0\VC\;

我还通过我的设置工具进行了更新(我认为是版本 8),它应该自动检测 Microsoft Visual C++ Compiler for Python 2.7。但是,我仍然遇到同样的错误。


我也尝试过使用

easy_install scrapy

我得到了这个错误

error: Setup script exited with error: Microsoft Visual C++ 10.0 is required (Un

能够找到 vcvarsall.bat)。


我的注册表中还有以下内容

HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\Setup\VC\ProductDir
HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\12.0\Setup\VC\ProductDir

【问题讨论】:

你用的是什么python版本? 2.7.x?另外,您能否提供更多有关错误的上下文(前后几行)?我确实收到了类似的“找不到 vcvarsall”,但这只是一个警告,scrapy 可以使用 python 2.7.9 安装。 我正在使用 Python 2.7.8 (anaconda 2.1.0) 32 位。我尝试了一个使用 Python 2.7.9 的环境,但它仍然无法正常工作。我更新了问题,在错误上方和下方添加了几行。 尝试安装:Microsoft Visual C++ Compiler for Python 2.7 我也遇到过同样的问题。然后我按照建议升级了点子。 python -m pip install --upgrade pip 我在 Python 3.4 中遇到了这个问题,我只需将 pip 更新到最新版本。 【参考方案1】:

我尝试了所有建议并找到了自己的简单解决方案。

问题是在C这样的外部环境中编写的代码需要编译器。寻找自己的VS环境,即VS 2008。

目前我的机器运行 VS 2012 并面对Unable to find vcvarsall.bat。 我研究了要安装的代码以找到 VS 版本。这是 VS 2008。我已添加到系统变量 VS90COMNTOOLS 作为变量名,并给出了 VS120COMNTOOLS 的值。

您可以在下面找到我的分步解决方案:

    右键单击我的电脑。 点击属性 高级系统设置 环境变量 添加新系统变量 在变量名中输入VS90COMNTOOLS 将当前版本的值输入到新变量中。 关闭所有窗口

现在打开一个新会话并pip install your-package

【讨论】:

我安装了VS140COMNTOOLS 并将%VS140COMNTOOLS% 添加到名为VS90COMNTOOLS 的变量中,它起作用了。 哇,它确实有效!我也有 VS140,并用SET VS90COMNTOOLS=%VS140COMNTOOLS% 设置它工作:D 这篇微软博文对我很有帮助...显然,不同版本的 Python 需要不同的编译器,甚至可能没有安装...blogs.msdn.microsoft.com/pythonengineering/2016/04/11/… 对我不起作用。 我安装了VS 10,12,14,我只能在变量中看到VS120COMNTOOLS。但错误显示我需要安装VS 14.0。我尝试了不同的组合。有人可以帮忙吗?我错过了什么? VS120COMNTOOLS 的值为C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools` but Tools` 文件夹在Common7 中缺失【参考方案2】:

做了很多事情后,我升级了pipsetuptoolsvirtualenv

    python -m pip install -U pip pip install -U setuptools pip install -U virtualenv

我在我的虚拟环境以及全球范围内执行了步骤 1、2。 接下来,我通过pip 安装了这个包,并且成功了。

【讨论】:

在尝试了一堆其他帖子之后,这是唯一对我有用的!谢谢! 如果我知道你是谁,我会寄钱给你。 在尝试设置变量等之后。这实际上是为我解决的问题! 这也解决了我的问题,我只需要将 virtualenv 更新到最新的 pip 9.0 附带的 15.1。 pip 7.0 似乎是这里的问题。 这对我也有用。非常感谢 。如果有人在安装时遇到 cl.exe not found 或 somefile not found 错误,只需从非官方来源安装“Twisted”和“lxml”库,然后您就可以轻松地从 pip 安装 Scrapy 而不会出现错误。链接:lfd.uci.edu/~gohlke/pythonlibs/#twisted【参考方案3】:

我在 python 3.4.3 中也遇到了同样的错误,我尝试使用此处和其他地方提到的解决方案,但没有成功。

Microsoft 为 Python 2.7 提供了一个编译器,但由于我使用的是 3.4.3,它并没有给我带来太多好处。

自 3.3 以来的 Python 已过渡到 2010,您可以在此处免费下载和安装 Visual C++ 2010 Express:https://www.visualstudio.com/downloads/download-visual-studio-vs#d-2010-express

这是关于 3.3 过渡到 2010 的官方博客文章:http://blog.python.org/2012/05/recent-windows-changes-in-python-33.html

因为以前的版本对 vcvarsall.bat 给出了不同的错误,所以我会使用“pip -V”仔细检查您使用的版本

C:\Users\B>pip -V
pip 6.0.8 from C:\Python34\lib\site-packages (python 3.4)

附带说明一下,我也尝试过首先使用最新版本的 VC++ (2013),但它需要安装 2010 express。

从那时起,它应该适用于使用 32 位版本的任何人,如果您使用的是 64 位版本,您将收到 ValueError: ['path'] 消息,因为 VC++ 2010 没有 64 位编译器.为此,您必须获得 Microsoft SDK 7.1。我不能超链接 64 位的指令,因为我被限制为每个帖子 2 个链接,但它在

Python PIP has issues with path for MS Visual Studio 2010 Express for 64-bit install on Windows 7

【讨论】:

我也在使用 Python 3.4。安装 Visual C++ 2010 Express 并没有解决我的问题。实际上avenet对上述答案的第二条评论已经解决了这个问题。【参考方案4】:

即使我安装了Microsoft Visual C++ Compiler for Python 2.7,我也可以使用scrapypsycopg2 重现这个问题(两者都需要C++ 编译)。

需要注意的是,我使用的是virtualenv。根据您的帖子,我不确定您是否也这样做。

无论如何我都尝试跳过虚拟环境的激活。然后scrapypsycopg2 都安装好了。

我的假设:这个 2014 C++ Python 编译器和 virtualenv 之间存在冲突。 我不知道为什么也不知道如何解决(如果有人能提出解决方法,我会很高兴)。

【讨论】:

当我在 Python 2.7 中遇到这个问题时,这个解决方案解决了我的问题。【参考方案5】:

尝试安装this,这是为 Python 2.7 启用 C++ 编译器的已知解决方法。

根据我的经验,当 pip 找不到 vcvarsall.bat 编译器时,我所做的只是打开一个 Visual Studio 控制台,因为它设置路径变量以直接调用 vcvarsall.bat,然后我在此命令行上运行 pip。

【讨论】:

已经为 Python 2.7 安装了 C++ 编译器。我打开了 Visual Studio Express 2013 for Web 和 Desktop 并尝试再次安装 scrapy,结果相同。 我尝试在 Python 2.7.9 上安装 scrapy(通过 pip install scrapy),在安装 this 之后,它运行良好。我会尝试安装 Anaconda 2.1.0。 它对我来说非常有效(使用 Anaconda 2.1.0)。我建议你清理你所有的开发环境(卸载所有不是强制性的,只添加microsoft.com/en-us/download/details.aspx?id=44266)然后再试一次,它应该可以在没有 vcvarsall.bat 问题的情况下工作。 在日志中,看起来 Python 3.4 是尝试构建扩展而不是 Python 2.7 的版本,这可能是问题所在。 为了避免通过 C++ 扩展进行编译,您可以试试这个lxml extension package,它包含每个 Python 安装的所有编译内容。之后再次运行安装,它应该跳过 lxml 安装。

以上是关于Python Pip 安装错误:找不到 vcvarsall.bat。尝试了所有解决方案[重复]的主要内容,如果未能解决你的问题,请参考以下文章

找不到Python pip安装模块。如何将python链接到pip位置?

找不到 Python pip 安装模块。如何将python链接到pip位置?

解决找不到pip模块的问题

Mac 找不到pip 和 pip3

从 pypi 安装 Pip 有效,但从 testpypi 失败(找不到要求)

通过pip安装python 3.6库的问题 - 找不到python36.dll