我尝试安装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
当前回答
如果您安装了mingw
pip install --global-option build_ext --global-option --compiler=mingw32 packagename
有效,迫使pip使用mingw编译器而不是Microsoft的编译器进行编译。请参见此处https://github.com/pypa/pip/issues/18有关详细信息(上一篇文章)。
其他回答
我想在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在您的安装中)。
也许有人会感兴趣,下面的内容适用于py2exe包。(我有windows 7 64位和可移植python 2.7,Visual Studio 2005 Express以及windows 7和.NET Framework 4的windows SDK)
set VS90COMNTOOLS=%VS80COMNTOOLS%
那么:
python.exe setup.py install
如果要使用Visual Studio C++而不是mingw进行编译。。。
运行python.exe以显示编译时使用的VC++版本(示例如下)。使用Python编译时使用的Visual C++编译器的相应版本是很重要的,因为distilutils的get_build_version防止混合版本(根据Piotr的警告)。黄色(顶部)是Python 2.7,使用MSC v.1500(Visual Studio C++2008)编译红色(底部)是Python 3.4.1,使用MSC v.1600(Visual Studio C++2010)编译使用下表[1]将内部VC++版本与相应的Visual Studio版本匹配:MSC v.1000->Visual C++4.xMSC v.1100->Visual C++5MSC v.1200->Visual C++6MSC v.1300->Visual C++.NETMSC v.1310->Visual C++.NET 2003MSC v.1400->Visual C++2005(8.0)MSC v.1500->Visual C++2008(9.0)MSC v.1600->Visual C++2010(10.0)MSC v.1700->Visual C++2012(11.0)MSC v.1800->Visual C++2013(12.0)MSC v.1900->Visual C++2015(14.0)MSC v.1910->Visual C++2017(15.0)MSC v.1911->Visual C++2017(15.3)MSC v.1912->Visual C++2017(15.5)MSC v.1913->Visual C++2017(15.6)MSC v.1914->Visual C++2017(15.7)MSC v.1915->Visual C++2017(15.8)MSC v.1916->Visual C++2017(15.9)从上一步下载并安装相应版本的Visual Studio C++。下面列出了VC++特定版本的其他注意事项。Visual Studio C++2008说明对于32位编译器,请下载Visual Studio C++2008速成版。对于64位编译器[2][3],请下载适用于Windows 7和.NET Framework 3.5 SP1的Windows SDK。取消选中“开发人员工具”>>“Visual C++编译器”以外的所有选项,以节省安装SDK工具所需的时间和磁盘空间。Visual Studio C++2010注释根据Microsoft的说法,如果您安装了Visual Studio 2010 SP1,它可能已经删除了VC++的编译器和库。如果是这种情况,请下载Visual C++2010 SP1编译器更新。Visual Studio C++2015注释如果您不需要Visual Studio IDE,请下载Visual Studio C++2015生成工具。Visual Studio C++2017注释如果您不需要Visual Studio IDE,请下载Visual Studio 2017的生成工具。建议:如果您同时安装了32位和64位Python,您可能还想使用virtualenv创建单独的Python环境,这样您就可以一次使用一个或另一个,而不必打乱选择使用哪个Python版本的路径。
根据@srodriguex的说法,您可以跳过手动加载批处理文件(步骤4-6),而是按照以下答案将一些批处理文件复制到Python正在搜索的位置。如果这不起作用,以下是最初对我有效的步骤。
打开cmd.exe在尝试安装需要C扩展名的东西之前,运行以下批处理文件将VC++编译器的环境加载到会话中(即环境变量、编译器路径等)。执行:32位编译器:注意:32位Windows安装将仅具有预期的C:\Program Files\“C:\Program Files(x86)\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat”64位编译器:“C:\Program Files(x86)\Microsoft Visual Studio 9.0\Common7\Tools\vsvars64.bat”注意:是的,本机64位编译器位于程序文件(x86)中。不要问我为什么。此外,如果您想知道vcvars64.bat和vcvarsx86_amd64.bat之间的区别,或者更重要的是amd64和x86_amd 64之间的区别是什么,前者用于本机64位编译器工具,后者是可以在32位Windows安装上运行的64位交叉编译器。更新:如果由于某种原因,您收到错误:。。。这在当时是出乎意料的。其中。。。是一系列字符,那么您需要检查路径变量是否没有多余的字符,如额外的引号或多余的字符。如果批处理文件一开始就无法理解,那么它将无法更新您的会话路径。如果进展顺利,根据您运行的VC++版本和命令,您应该收到以下消息之一:对于32位编译器工具:设置使用Microsoft Visual Studio 20xx x86工具的环境。对于64位编译器工具:正在设置使用Microsoft Visual Studio 20xx x64工具的环境。现在,通过python setup.py install或pip install pkg名称运行安装程序希望并祈祷行星正确对齐,以便VC++合作。
以下步骤为我解决了这个问题,我正尝试使用cython扩展创建设置。
安装Microsoft Visual C++编译器Python 2.7版默认安装位置为@C: \Users\PC user\AppData\Local\Programs\Common\Microsoft\Visual C++对于Python这实际上可能会解决问题,请在继续之前测试一次。如果失败,请检查VC中的位置++对于python,vcvarsall.bat文件位于打开msvc9compiler.py记事本中distutils包的文件。在我的箱子里@C: \Anaconda2\Lib\distutils\msvc9compiler.py find_vcvarsall函数在此文件中,通过打印版本来确定VC的版本论点对于Python 2.7,可能是9.0现在创建一个环境变量VS90COMNTOOLS,指向C: \Users\PC user\AppData\Local\Programs\Common\Microsoft\Visual C++用于Python\9.0\VC\bin出于某种原因,distutils期望vcvarsall.bat文件应位于VCdir中,但对于python工具则为VC++它位于9.0的根目录中。要解决此问题,请从path.join(大致围绕第247行)#productdir=os.path.join(toolsdir,os.pardir,os.pardir,“VC”)productdir=os.path.join(toolsdir,os.pardir,os.pardir)
以上步骤为我解决了问题。
转到此处: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链接。