我尝试安装Python包dulwich:
pip install dulwich
但我收到了一条神秘的错误消息:
error: Unable to find vcvarsall.bat
如果我尝试手动安装软件包,也会发生同样的情况:
> python setup.py install
running build_ext
building 'dulwich._objects' extension
error: Unable to find vcvarsall.bat
我尝试安装Python包dulwich:
pip install dulwich
但我收到了一条神秘的错误消息:
error: Unable to find vcvarsall.bat
如果我尝试手动安装软件包,也会发生同样的情况:
> python setup.py install
running build_ext
building 'dulwich._objects' extension
error: Unable to find vcvarsall.bat
当前回答
我在Windows 7 x64上使用Python 3.4.1时遇到了这个问题,不幸的是,我需要的软件包没有适合我使用的exe或轮子。该系统需要一些“变通方法”,具体如下(TLDR位于底部)。
使用Jaxrtech上面的答案中的信息,我确定我需要Visual Studio C++2010(sys.version return MSC v.1600),所以我从他的答案中的链接安装了Visual C++2010 Express,这是http://go.microsoft.com/?linkid=9709949.我安装了所有的更新,但正如你在下面看到的,这是一个错误。此时只应安装Express的原始版本(没有更新任何内容)。
vcvarsall.bat现在存在,但在安装包时出现了一个新错误,query_vcvarsall引发ValueError(str(list(result.keys()))ValueError:[u'path']。还有其他与此错误相关的stackerflow问题,例如为Python 2.7构建/安装C模块时出错
根据这个答案,我确定2010 Express只安装32位编译器。要获得64位(和其他)编译器,您需要安装Windows 7.1 SDK。看见http://msdn.microsoft.com/en-us/windowsserver/bb980924.aspx
但这不会为我安装,安装程序返回错误安装失败,返回代码5100。我在以下链接找到了解决方案:http://support.microsoft.com/kb/2717426.简而言之,如果安装了更新版本的x86和x64 Microsoft Visual C++2010 Redistributable,它们将与SDK安装程序中的版本冲突,需要首先卸载。
然后安装了SDK,但我注意到vcvars64.bat仍然不存在于C:\Program Files(x86)\Microsoft Visual Studio 10.0\VC\bin及其子文件夹中。vcvarsall.bat运行vcvars64批处理文件,因此如果没有它,python包仍然无法安装(我忘记了此时显示的错误)。
然后我在这里找到了一些说明:http://www.cryptohaze.com/wiki/index.php/Windows_7_Build_Setup#Download_VS_2010_and_Windows_SDK_7.1按照说明,我已经安装了Express和7.1 SDK,因此安装了SDK 7.1 SP1,并修复了缺失的头文件。然后,我手动创建了vcvars64.bat,内容为CALL setenv/x64。我会把所有的说明贴在这里,这样他们就不会迷路了。
步骤1是下载Visual Studio Express 2010。http://www.microsoft.com/visualstudio/en-us/products/2010-editions/express是一个很好的开始。下载安装程序并运行它(vc_web.exe)。您不需要SQL 2008附加下载。您还需要64位的Windows SDK(当前为7.1)编译器-除非您想进行32位编译,否则完全支持。。。http://www.microsoft.com/en-us/download/details.aspx?id=8279很好下载此文件的起点-您需要运行winsdk_web.exe下载时!这里的默认安装刚刚好。最后,下载并安装Windows SDK 7.1 SP1更新:http://www.microsoft.com/en-us/download/details.aspx?id=4422为了修复丢失的头文件,VS2010 SP1。http://www.microsoft.com/downloads/en/confirmation.aspx?FamilyID=75568aa6-8107-475d-948a-ef22627e57a5该死的,修复VS2010 Express丢失的批处理文件。这越来越荒谬了。在C:\Program Files(x86)\Microsoft Visual Studio 10.0\VC\bin\amd64中,使用以下命令创建“vcvars64.bat”(您需要运行作为管理员):CALL setenv/x64
我的python包仍然没有安装(无法回忆错误)。然后我找到了一些使用特殊SDK 7.1命令提示符的说明(复制如下),请参阅:https://mail.python.org/pipermail/distutils-sig/2012-February/018300.html
别管这个问题。这里有人注意到菜单上的此项:开始->所有程序->Microsoft Windows SDK v7.1->Windows SDK 7.1命令提示符这将运行一个批处理作业,该作业似乎为编译器设置了一个工作环境。在该提示符下,您可以键入“setup.py build”或“setup.py install”。
我按照指示打开了Windows SDK 7.1命令提示符,并使用它在python包上运行easy_install。最后,成功了!
太长,读不下去了
安装Visual Studio Express 2010(最好没有更新的可再发行版或SQL server)。安装Windows 7.1 SDKInstal SDK 7.1 SP1更新和VS2010 SP1头文件修复(可能不需要此步骤)。使用内容CALL setenv/x64手动创建C:\Program Files(x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\vcvars64.bat开始->所有程序->Microsoft Windows SDK v7.1->Windows SDK 7.1命令提示符以打开特殊的x64命令提示符,然后可以与python/easy_install/pip/etc(包括virtual_envs中的命令提示符)一起使用。
其他回答
我想在Windows 10上使用Python 2.7运行pysph,但没有找到vcvarsall.bat(来自distutils)
我的解决方案如下:
安装Microsoft Visual C++for Python 2.7(如@Michael建议的那样)
在Windows 10上,它安装到(我的用户名是Andreas):
C:\Users\Andreas\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0
将环境变量VS90COMNTOOLS设置为Visual C++for Python 2.7的安装路径(请参见上面的路径)。
如果仍然不起作用,则在模块中进行修改
C:/Python27/lib/distutils
文件msvc9compiler.py。在其中查找函数Find_vcvarsall并执行以下修改。
更换管路:
productdir = os.path.join(toolsdir, os.pardir, os.pardir, "VC")
with
productdir = os.path.join(toolsdir)
在我的案例中,这就是vcvarsall.bat所在的位置(请检查,vcvarsall.bat在您的安装中)。
看起来它正在寻找VC编译器,所以您可以尝试使用-c mingw32提及编译器类型,因为您有msys
python setup.py install -c mingw32
distutils(以及一些setuptools)官方支持的MS VС++版本和安装变体的详细列表,以及如何使用它们,请访问
https://wiki.python.org/moin/WindowsCompilers
它还指定了哪个Win32 Python官方版本需要哪个VC++版本。请注意,MinGW不受官方支持(详见下文)。
简而言之:
对于每个版本,都有一个现成的特定Visual Studio版本。请注意,2012年之前的Express版本不支持x64。尝试对x64使用一个会导致未知错误。对于独立SDK,通常需要从SDK提示符(=设置环境变量)运行安装。对一些人来说,这一要求可以通过一次性调整来解除,而不会产生不利的副作用setuptools支持一些不常见的VC++版本,而不是distutils。据说MinGW“工作”,但仅适用于x86。https://bugs.python.org/issue4709表示其支持的问题在于MinGW本身,甚至自Python 3.5以来,x86也必然会出现问题。
转到此处:http://docs.continuum.io/anaconda/install.html#windows-安装
有安装anaconda的说明,它将提供一个GUI和一个静默安装的大多数软件包,这些软件包似乎导致了这个问题http://www.scipy.org/.我知道2.7的解决方案https://www.microsoft.com/en-us/download/details.aspx?id=44266但我没有看到Python 3.4的选项。下载并安装Anaconda后,您应该能够从scipy导入所需的大部分软件包。
希望这能帮助一些人。我花了45分钟的时间来搜索帖子和网站。
编辑:我只想注意GUI页面上OS符号旁边有一个Python34链接。
关于这个问题的最佳和详尽的答案如下:https://blogs.msdn.microsoft.com/pythonengineering/2016/04/11/unable-to-find-vcvarsall-bat/
在大多数情况下,只要找到适合您所需的python依赖项的.whl包并使用pip安装它就足够了。
在最后一种情况下,您必须安装microsoft编译器并从源代码安装软件包。