我尝试安装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中的命令提示符)一起使用。
其他回答
2016年解决这一问题的最简单方法是安装Chocolatey,然后安装vcpython27包。打开Powershell:
> iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))
> choco install python2 -y
> choco install vcpython27 -y
如果您安装了mingw
pip install --global-option build_ext --global-option --compiler=mingw32 packagename
有效,迫使pip使用mingw编译器而不是Microsoft的编译器进行编译。请参见此处https://github.com/pypa/pip/issues/18有关详细信息(上一篇文章)。
您需要安装一个与用于构建Python的编译器兼容的Microsoft编译器。这意味着您需要Visual C++2008(或更高版本,有一些调整)。
微软现在提供了一个捆绑的编译器和头文件,以便能够在令人难忘的URL上编译Python扩展:
Microsoft Visual C++编译器Python 2.7版http://aka.ms/vcpython27
这是一个相对较小的包装;85MB可下载,无需管理员权限即可安装,无需重新启动。这个名字有点误导人,编译器适用于最初使用Visual C++2008编译的任何Python版本,而不仅仅是Python 2.7。
如果启动Python交互式提示或打印sys.version,请查找MSC版本字符串;如果是MSC v.1500,您可以使用此工具。
从最初的公告到distutils列表:
微软发布了Python 2.7的编译器包,使人们更容易在Windows上构建和分发C扩展模块。Microsoft Visual C++编译器Python 2.7版(又名VC9)可从以下网站获得:http://aka.ms/vcpython27 此包包含为Python 2.7 32位和64位构建C扩展模块所需的所有工具和头文件(请注意,某些扩展模块需要第三方依赖项,如未包含的OpenSSL或libxml2)。也支持使用Visual C++2008构建的Python的其他版本,因此“Python 2.7”只是一个广告——它可以在2.6和3.2中正常工作。
请注意,您需要安装setuptools6.0或更高版本(在下载页面的系统要求中列出)。您正在安装的项目必须使用setuptools.setup(),而不是distutils,否则自动检测将无法工作。
微软表示,他们希望保持URL稳定,以便自动化脚本可以轻松引用它。
我也遇到过同样的问题,所以我将在这里讲述我的故事,希望它能帮助其他人解决同样的问题并节省我刚刚花的几个小时:
我在一个windows7盒子里有mingw(g++(GCC)4.6.1)和python 2.7.3,我正在尝试安装PyCrypto。
在运行setup.py install时,这一切都以以下错误开始:
error: Unable to find vcvarsall.bat
通过将mingw指定为所选编译器,在谷歌搜索错误后轻松解决:
setup.py install build --compiler=mingw32
问题是,然后我得到了一个不同的错误:
configure: error: cannot run C compiled programs.
事实证明,我的防病毒软件阻止了新编译的.exe的执行。我刚刚禁用了防病毒“常驻屏蔽”,并转到下一个错误:
cc1.exe: error: unrecognized command line option '-mno-cygwin'
error: command 'gcc' failed with exit status 1
这解决了这个问题:“要么安装稍微旧一点的MinGW版本,要么在Python目录中编辑distutils\cygwinccompiler.py以删除-mno-cygwin的所有实例。”(从这里开始)
现在,我终于可以开始工作了。
当我尝试在python 3.5上安装numpy库时,遇到了这个问题。解决方案是安装VS2015。我有VS2008、2012、2013,它们都与python 3.5不兼容。显然,较新版本的python依赖于较新版本VS。
还要确保Visual Studio中安装了C++通用工具。