运行Python脚本时找不到vcvarsall.bat
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了运行Python脚本时找不到vcvarsall.bat相关的知识,希望对你有一定的参考价值。
我正在使用Vista,并使用Python 2.6.4。我正在使用一个使用Python脚本的软件,但碰到了这个消息:
cannot find vcvarsall.bat
所以,我安装了visual c ++ 2010.仍然找不到文件 - 但是,它就在那里。我的猜测(一个非常没有受过教育的人......)是路径错误的地方,因为我还有一个旧的视觉2008(非常空)文件夹。我不知道在哪里对新路径进行更改。我是否在注册表或脚本中更改了某些内容?或者别的地方?
似乎Python正在明确地寻找Visual Studio 2008.我遇到了这个问题,即使它在路径上也无法找到vcvarsall.bat。
事实证明Visual Studio 2010创建了以下环境变量:
SET VS100COMNTOOLS=C:Program FilesMicrosoft Visual Studio 10.0Common7Tools
修复方法是创建一个名为VS90COMNTOOLS
的变量,并指向Visual Studio 2010常用工具文件夹,例如:
SET VS90COMNTOOLS=C:Program FilesMicrosoft Visual Studio 10.0Common7Tools
这为我修复了它,我现在可以使用Visual Studio 2010编译器构建包。
您还可以使用以下命令将VS90环境变量设置为指向VS100环境变量:
SET VS90COMNTOOLS=%VS100COMNTOOLS%
对于WINDOWS用户来说,这是最新的答案 - 非常简单的解决方案。
正如其他人所指出的,问题是python / cython等试图找到它们构建的相同编译器,但计算机上不存在此编译器。大多数情况下,此编译器是visual studio(2008,2010或2013)的一个版本,但是未安装此类编译器,或者安装了较新版本,并且系统阻止安装较旧版本。所以,解决方案很简单:
1)查看C: Program Files(x86)并查看是否有已安装的Microsoft Visual Studio版本,以及它是否比构建Python的版本更新。如果没有,请安装(/更新)构建Python的版本(请参阅前面的答案),甚至是最新版本,然后按照下一步操作。
2)如果已经安装了最新版本的Microsoft visual studio,我们必须使Python / cython等认为它是构建它的版本。这很简单:转到系统环境变量并创建以下变量(如果它们不存在):
VS100COMNTOOLS
VS110COMNTOOLS
VS120COMNTOOLS
VS140COMNTOOLS
并将这些变量的字段设置为
“C: Program Files(x86) Microsoft Visual Studio 10.0 Common7 Tools”(如果安装了visual studio 2008)或“C: Program Files(x86) Microsoft Visual Studio 11.0 Common7 Tools”(如果安装了visual studio 2010)或“C: Program Files(x86) Microsoft Visual Studio 12.0 Common7 Tools”(如果安装了visual studio 2013)或“C: Program Files(x86) Microsoft Visual Studio 14.0 Common7 Tools“(如果安装了visual studio 2015)。
此解决方案适用于32位版本的python。它也适用于64位版本,但我没有测试过;最有可能的是,对于64位版本,必须执行以下附加步骤:
3)将路径“C: Program Files(x86) Microsoft Visual Studio 11.0 VC”添加到%PATH%环境变量(根据您的版本更改visual studio的版本号)。
4)从命令行运行“vcvarsall.bat x86_amd64”
就这样。
在尝试了每个线程上的每个选项之后,我决定深入挖掘源代码以找到解决方案。
编辑你的$PythonPath/Lib/distutils/_msvccompiler.py
找到def _find_vcvarsall(plat_spec):
添加为下一行,添加
PathToVC=r"C:Program Files (x86)Microsoft Visual Studio 12.0VCvcvarsall.bat"
return PathToVC, r""
然后确保您的visual studio bin目录在您的路径中。
如果这不起作用,您可能需要编辑其他文件,包括:
- $ PYTHONPATH / lib中/的distutils / msvc9compiler.py
- $ PYTHONPATH /库/站点包/ setuptools的/ msvc9_support.py
我在这里尝试了通过命令行设置环境变量的解决方案,但这不起作用。我是从常规命令提示符和Visual Studio Developer命令提示符执行此操作。
我可以像这样克服这个问题:
- 转到环境变量屏幕并在VS100COMNTOOLS中创建一个新变量,让它指向我的Visual Studio安装文件夹C: Program Files Microsoft Visual Studio 12.0 Common7 Tools
- 转到上面的文件夹。在这个文件夹里面有文件vsvars32.bat。复制此文件并将其重命名为vsvarsall.bat
我的配置是Visual Studio 2013(12.0)和Python 3.4.2
请注意,有一个非常简单的解决方案。
- 从http://www.microsoft.com/en-us/download/details.aspx?id=44266下载软件并安装它。
- 找到安装目录,它类似于“C: Users USER_NAME AppData Local Programs Common Microsoft Visual C ++ for Python”
- 将目录名称“C: Users USER_NAME AppData Local Programs Common Microsoft Visual C ++ for Python 9.0”更改为“C: Users USER_NAME AppData Local Programs Common Microsoft Visual C ++ for Python VC“
- 添加一个新的环境变量“VS90COMNTOOLS”,其值为“C: Users USER_NAME AppData Local Programs Common Microsoft Visual C ++ for Python VC VC”
现在一切都好。
如果有人来这里寻找Python 3.5的答案;你需要Visual Studio 2015。
在这里获取Visual Studio 2015社区:https://www.visualstudio.com/en-us/downloads/visual-studio-2015-downloads-vs.aspx,这对我有用,无需进一步的步骤。
非常感谢Ionel,显然是网上唯一能找到这些信息的地方! http://blog.ionelmc.ro/2014/12/21/compiling-python-extensions-on-windows/
从这里安装Visual Studio Express 2008(9.0):http://go.microsoft.com/?linkid=7729279
这就是为我解决的问题。
在Windows 10 64位上安装Visual Studio Community 2015 Edition之后。这个错误没有发生。然后我安装Microsoft Visual C++ Compiler for Python 2.7。因为它需要vcvarsall.bat
文件。这个文件在Visual Studio Community 2015中没有,但它在Microsoft Visual C ++ Compiler for Python 2.7中。我还将其路径添加到我的环境变量中,但它也没有用。然后我卸载python 3.4.2并删除了python的所有文件夹,并安装了python 2.7。最后我使用powershell运行pip,然后我就可以安装我所需的软件包,即flask-user。
pip install flask-user
在Windows上有一个令人困惑的边缘情况。如果您按照建议安装2007窗口,并且在直接执行python setup.py install
时仍然会出现此错误,那么setup.py可能会使用旧版本的设置工具。
特别是,将Windows指向Windows安装编译器的正确位置的代码位于setuptools库的__init__
方法中,这意味着您必须在setup.py中使用setuptools模块。一些较旧的setup.py调用方法直接来自distutils.core
。如果是这种情况,那么setup.py将永远不会找到Windows安装的编译器。只需将import setuptools编写为setup.py文件的第一行即可解决此问题。
Reference: https://bugs.python.org/issue23246:看看steve dower引用的一半:
Setuptools有代码来查找编译器包。我们故意把它放在那里,而不是为了确保更多的人能够得到它。我应该将额外的检查移植到2.7.10中,但是立即修复是导入setuptools。
这是一个简单的解决方案。我正在使用Python 2.7和Windows 7。
您要安装的内容需要C / C ++编译器,但Python没有找到它。许多Python包实际上是用C / C ++编写的,需要编译。编译C ++需要vcvarsall.bat,pip假设你的机器可以做到这一点。
- 首先尝试升级setuptools,因为v6.0及更高版本会自动检测编译器。您可能已经有了编译器,但Python无法找到它。打开命令行并键入:
pip install --upgrade setuptools
- 现在再次尝试安装您的包:
pip install [yourpackagename]
- 如果这不起作用,那么肯定你没有编译器,所以你需要安装一个: http://www.microsoft.com/en-us/download/details.aspx?id=44266
- 现在再试一次:
pip install [yourpackagename]
你去吧它应该适合你。
此问题的解决方案是设置以下环境变量:
VS90COMNTOOLS
例如:
set VS90COMNTOOLS=C:Program FilesMicrosoft Visual Studio 9.0Common7Tools
安装Visual Studio后不重新启动或安装后未启动新的命令提示符可能导致此错误。
您可以用来编译扩展的Visual Studios版本可能取决于您正在构建的python版本。
在2015年,如果你仍然遇到这个令人困惑的错误,请责怪PIP使用的python默认setuptools。
- 下载并安装从http://www.microsoft.com/en-in/download/details.aspx?id=44266编译python 2.7模块所需的最小Microsoft Visual C ++ Compiler for Python 2.7
- 更新您的setuptools -
pip install -U setuptools
- 安装任何需要C编译的python包。
pip install blahblah
它会工作正常。
更新:它不适用于所有库。我仍然会遇到一些需要lib-headers的模块错误。他们唯一能够完美运行的是Linux平台
这个神秘的错误意味着您没有安装C编译器。 There was a discussion to propose a more explanative error(is continued here,如果您关心它,请注册并发表评论!)但目前仍未实施。
要解决此问题,您可以安装大约需要GB的Visual Studio 2008 SDK,也可以安装非常小的VCForPython27.msi但目前distutils不能很好地支持,这里是以下过程:
1) install Microsoft Visual C++ Compiler for Python 2.7 from
http://www.microsoft.com/en-us/download/details.aspx?id=44266
2) Enter MSVC for Python command prompt
3) SET DISTUTILS_USE_SDK=1
4) SET MSSdk=1
5) you can then以上是关于运行Python脚本时找不到vcvarsall.bat的主要内容,如果未能解决你的问题,请参考以下文章
安装mysqldb python接口时找不到mysql_config
尝试从 R 脚本渲染闪亮的 flexdashboard 时找不到错误对象输出