错误:无法找到vcvarsall.bat

时间:2010-05-12 10:24:35

标签: python windows pip setup.py failed-installation

我尝试安装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

42 个答案:

答案 0 :(得分:680)

更新 :评论指出此处的说明可能有危险。请考虑使用Visual C ++ 2008 Express版或特制的Microsoft Visual C++ Compiler for Pythondetails)和 NOT ,使用下面的原始答案。原始错误消息表示未安装所需的Visual C ++版本。


对于Windows安装:

在运行setup.py进行软件包安装时,Python 2.7会搜索已安装的Visual Studio 2008.您可以通过在调用{{1}之前在VS90COMNTOOLS环境变量中设置正确的路径来欺骗Python使用较新的Visual Studio }}

根据安装的Visual Studio版本执行以下命令:

  • Visual Studio 2010(VS10):setup.py
  • Visual Studio 2012(VS11):SET VS90COMNTOOLS=%VS100COMNTOOLS%
  • Visual Studio 2013(VS12):SET VS90COMNTOOLS=%VS110COMNTOOLS%
  • Visual Studio 2015(VS14):SET VS90COMNTOOLS=%VS120COMNTOOLS%

警告:如下所述,如果您尝试编译python模块,则此答案不太可行。

有关详细信息,请参阅Building lxml for Python 2.7 on Windows

答案 1 :(得分:224)

我找到了解决方案。 我有完全相同的问题,并且错误,安装'amara'。我安装了mingw32,但需要配置distutils。

  1. 我已经安装了Python 2.6。
  2. 我将mingw32安装到C:\programs\mingw\
  3. 将mingw32的bin目录添加到您的环境变量:将c:\programs\MinGW\bin;追加到路径
  4. 编辑(创建,如果不存在)位于C:\Python26\Lib\distutils\distutils.cfg distutils.cfg 文件为:

    [build]
    compiler=mingw32
    
  5. 现在运行easy_install.exe amara

  6. 通过打开新的cmd.exe确保环境设置。

答案 2 :(得分:221)

您可以从http://www.lfd.uci.edu/~gohlke/pythonlibs/

安装已编译的版本

答案 3 :(得分:151)

如果要使用Visual Studio C ++编译而不是mingw ...

  1. 运行python.exe以显示编译的VC ++版本(示例如下所示)。

      

    重要使用编译Python的相应版本的Visual C ++编译器,因为distilutils get_build_version阻止了混合版本(per Piotr's warning )。

    • 黄色(顶部)是Python 2.7,使用MSC v.1500(Visual Studio C ++ 2008)编译
    • Red(底部)是Python 3.4.1,使用MSC v.1600(Visual Studio C ++ 2010)编译

    Example from the command line showing Python 2.7 compiled with MSC v.1500 and Python 3.4.1 compiled with MSC v.1600

  2. 使用下表 [1] 将内部VC ++版本与相应的Visual Studio版本相匹配:

    MSC v.1000 -> Visual C++ 4.x        
    MSC v.1100 -> Visual C++ 5          
    MSC v.1200 -> Visual C++ 6          
    MSC v.1300 -> Visual C++ .NET       
    MSC v.1310 -> Visual C++ .NET 2003  
    MSC 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)   
    
  3. 从上一步下载并安装相应版本的Visual Studio C ++ 下面列出了VC ++特定版本的附加说明。

    Visual Studio C ++ 2008的注释

    对于 32位编译器,请下载Visual Studio C++ 2008 Express Edition

    对于64位编译器 [2] [3] ,请下载Windows SDK for Windows 7 and .NET Framework 3.5 SP1

      
        
    • 取消选中Developer Tools >> Visual C++ Compilers以外的所有内容,以节省安装您不需要的SDK工具的时间和磁盘空间。
    •   

    Visual Studio C ++ 2010注意事项

    根据Microsoft的说法,如果安装了Visual Studio 2010 SP1,它可能已经删除了VC ++的编译器和库 如果是这种情况,请下载Visual C++ 2010 SP1 Compiler Update

    Visual Studio C ++ 2015的注释

    如果您不需要Visual Studio IDE,请下载Visual Studio C++ 2015 Build Tools

    Visual Studio C ++ 2017的注释

    如果您不需要Visual Studio IDE,请下载Build Tools for Visual Studio 2017

    建议:如果您同时安装了32位和64位Python,则可能还需要使用virtualenv创建单独的Python环境,以便可以使用其中一个或另一个在没有弄乱你的路径选择使用哪个Python版本的时候。

  4.   

    根据@srodriguex,您可以跳过手动加载批处理文件(步骤4-6),而不是通过this answer将一些批处理文件复制到Python正在搜索的位置。如果这不起作用,以下是最初为我工作的以下步骤。

    1. 打开cmd.exe

    2. 之前尝试安装需要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位编译器位于Program Files (x86)。不要问我为什么。
          另外,如果您想知道vcvars64.batvcvarsx86_amd64.bat之间的区别,或者更重要的是amd64x86_amd64之间的区别,前者是针对本机64位编译器工具的后者是可以在32位Windows安装上运行的64位交叉编译器。

      <强>更新
      如果由于某种原因你得到error: ... was unexpected at this time. ...是一系列字符,那么你需要检查你的路径变量没有任何无关的字符,如额外的引号或杂散字符。如果批处理文件首先无法理解它,那么批处理文件将无法更新会话路径。

    3. 如果进展顺利,则应根据VC ++的版本和运行的命令获取以下消息之一:

      对于32位编译器工具:
      Setting environment for using Microsoft Visual Studio 20xx x86 tools.

      对于64位编译器工具:
      Setting environment for using Microsoft Visual Studio 20xx x64 tools.

    4. 现在,通过python setup.py installpip install pkg-name

    5. 运行设置
    6. 希望并指出行星正确对齐,以便VC ++合作。

答案 4 :(得分:71)

发生了什么事? Python模块可以是part written in C or C++(通常用于速度)。如果您尝试使用Pip(或setup.py)安装此类软件包,则必须从源代码编译该C / C ++。开箱即用,Pip将肆无忌惮地假设您安装了Microsoft Visual C ++编译器。如果你没有它,你会看到这个神秘的错误消息“错误:无法找到vcvarsall.bat”。

规定的解决方案是安装C / C ++编译器,Microsoft Visual C ++或MinGW(开源项目)。但是,安装和配置任何一个都非常困难。 (编辑2014:Microsoft为Python 2.7发布了一个特殊的C++ compiler

最简单的解决方案是将Christoph Gohlke的Windows安装程序(.msi)用于流行的Python包。他为Python 2.x和3.x,32位和64位构建安装程序。您可以从http://www.lfd.uci.edu/~gohlke/pythonlibs/

下载它们

如果您也认为“错误:无法找到vcvarsall.bat”是一个非常含糊而且无益的消息,那么请在http://bugs.python.org/issue2943上对错误进行评论,以用更有用且用户友好的消息替换它。

为了进行比较,Ruby附带了一个包管理器Gem,并提供了一个准官方的C / C ++编译器DevKit。如果您尝试安装没有它的软件包,您会看到这个有用的友好有用的消息:

  

请更新您的PATH以包含构建工具或从http://rubyinstaller.org/downloads下载DevKit并按照http://github.com/oneclick/rubyinstaller/wiki/Development-Kit

上的说明操作

您可以在https://stackoverflow.com/a/13445719/284795

阅读更长时间的关于Python打包的咆哮

答案 5 :(得分:63)

您需要安装Microsoft编译器,与用于构建Python的编译器兼容。这意味着您需要Visual C ++ 2008(或更新版本,some tweaking)。

Microsoft现在提供捆绑的编译器和标题 ,以便能够在令人难忘的URL上编译Python扩展:

  

用于Python 2.7的Microsoft Visual C ++编译器

     

http://aka.ms/vcpython27

这是一个相对较小的包;下载85MB,无需管理员权限即可安装,无需重启。该名称有点误导,编译器适用于最初使用Visual C ++ 2008编译的任何Python版本,而不仅仅是Python 2.7。

如果您启动Python交互式提示或打印sys.version,请查找MSC版本字符串;如果是MSC v.1500,您可以使用此工具。

来自original announcement to the distutils list

  

Microsoft已发布Python 2.7编译器软件包,使人们可以更轻松地在Windows上构建和分发C扩展模块。用于Python 2.7的Microsoft Visual C ++编译器(a.k.a. VC9)可从以下网址获得:http://aka.ms/vcpython27

     

此软件包包含为32位和64位Python 2.7构建C扩展模块所需的所有工具和标头(请注意,某些扩展模块需要第三方依赖项,如OpenSSL或libxml2,不包括在内)。还支持使用Visual C ++ 2008构建的其他Python版本,因此“Python 2.7”只是广告 - 它可以在2.6和3.2下正常工作。

请注意,您需要安装setuptools 6.0 or newer(在下载页面的系统要求中列出)。您要安装的项目必须使用setuptools.setup(),而不是distutils,否则自动检测将无效。

Microsoft已声明他们希望保持URL稳定,以便自动脚本可以轻松引用它。

答案 6 :(得分:54)

我刚遇到同样的问题,所以我会在这里讲述我的故事,希望能帮助其他人解决同样的问题,并将他们花费几个小时来保存:

我在Windows 7的框中有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的所有实例。” (来自here

现在,我终于可以开始工作了。

答案 7 :(得分:23)

看起来它正在寻找VC编译器,所以你可以尝试用-c mingw32来提及编译器类型,因为你有msys

python setup.py install -c mingw32

答案 8 :(得分:20)

我有python 2.73和Windows 7.对我有用的解决方案是:

  1. 将mingw32的bin目录添加到环境变量:使用C:\programs\mingw\bin;附加 PATH
  2. 创建位于C:\Python27\Lib\distutils\distutils.cfg distutils.cfg ,其中包含:

    [build]
    compiler=mingw32
    
  3. 要处理MinGW不再识别-mno-cygwin标志,请删除C:\ Python27 \ Lib \ distutils \ cygwincompiler.py第322行至第326行中的标志,如下所示:

      self.set_executables(compiler='gcc -O -Wall',
                             compiler_so='gcc -mdll -O -Wall',
                             compiler_cxx='g++ -O -Wall',
                             linker_exe='gcc',
                             linker_so='%s %s %s'
                                        % (self.linker_dll, shared_option,
                                           entry_point))
    

答案 9 :(得分:16)

查看您要安装的软件包的setup.py文件。如果是旧版软件包,则可能导入distutils.core.setup()而不是setuptools.setup()

我参与了这个(2015年),结合了以下因素:

  1. 来自http://aka.ms/vcpython27的Microsoft Visual C ++编译器Python 2.7

  2. 使用distutils.core.setup()

  3. 的较旧软件包
  4. 尝试python setup.py build而不是pip

  5. 如果你使用最新版本的pip,它会强制(monkeypatch)包使用setuptools,即使它的setup.py调用了distutils。但是,如果您不使用pip,而只是执行python setup.py build,则构建过程将使用distutils.core.setup(),它不知道编译器的安装位置。


    解决方案

    步骤1:打开相应的Visual C ++ 2008命令提示符

    打开“开始”菜单或“开始”屏幕,然后搜索“Visual C ++ 2008 32位命令提示符”(如果您的python是32位)或“Visual C ++ 2008 64位命令提示符”(如果您的python是64)位)。运行。命令提示符应该在标题栏中显示Visual C ++ 2008 ....

    第2步:设置环境变量

    在刚刚打开的命令提示符中设置这些环境变量。

    SET DISTUTILS_USE_SDK=1
    SET MSSdk=1
    

    参考http://bugs.python.org/issue23246

    第3步:构建并安装

    cd到您要构建的包,然后运行python setup.py build,然后python setup.py install。如果要安装到virtualenv中,请在构建之前将其激活。

答案 10 :(得分:9)

也许有人可能感兴趣,以下为py2exe包工作了。 (我有Windows 7 64位和便携式python 2.7,带有Windows SDK for Windows 7和.NET Framework 4的Visual Studio 2005 Express)

set VS90COMNTOOLS=%VS80COMNTOOLS%

然后:

python.exe setup.py install

答案 11 :(得分:8)

在我的python 3.4 64位版本中花了将近2天的时间来弄清楚如何解决这个问题:Python 3.4.3(v3.4.3:9b73f1c3e601,2015年2月24日,22:44:40)[MSC v.1600 64在win32上的位(AMD64)]

解决方案1,难点:(在阅读本文之前,请先阅读下面的解决方案2) 最后,这对我有所帮助:

  1. 安装Visual C++ 2010 Express
  2. 安装Microsoft Windows SDK v7.1 for Windows 7
  3. vcvars64.bat中手动创建文件C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64,其中包含CALL "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64或其他路径,具体取决于您安装的位置
  4. (这似乎是可选的)与Microsoft Visual Studio 2010 Service Pack 1
  5. 一起安装Microsoft Visual C++ 2010 Service Pack 1 Compiler Update for the Windows SDK 7.1
  6. 之后我尝试pip install numpy但收到以下错误:

    File "numpy\core\setup.py", line 686, in get_mathlib_info
    raise RuntimeError("Broken toolchain: cannot link a simple C program")
    RuntimeError: Broken toolchain: cannot link a simple C program
    

    我已根据此https://stackoverflow.com/a/23099820/4383472

  7. mfinfo中将None更改为C:\Python34\Lib\distutils\msvc9compiler.py
  8. 最后在pip install numpy命令之后我的avast防病毒试图干扰安装过程,但我很快就禁用了它
  9. 花了很长时间 - 几分钟为numpy编译,我甚至认为有一个错误,但最后一切都还好。

    解决方案2,简单: (我知道这个方法已经在一个高度投票的answer中提到了,但让我再说一遍,因为它真的很容易) 完成所有这些工作后,我明白对我来说最好的方法就是将来使用http://www.lfd.uci.edu/~gohlke/pythonlibs/中已经预编译的二进制文件。我很少有机会需要这个网站不包含的软件包(或软件包的一个版本)。这种安装过程也快得多。例如,要安装numpy

    1. 从该网站下载numpy‑1.9.2+mkl‑cp34‑none‑win_amd64.whl(如果你有64位的Python 3.4)
    2. 在命令提示符或powershell中使用pip pip install numpy‑1.9.2+mkl‑cp34‑none‑win_amd64.whl安装它(或文件的完整路径,具体取决于命令提示符的打开方式)

答案 12 :(得分:7)

我想在Python 2.7下在Windows 10上运行pysph并且找不到vcvarsall.bat(来自distutils)

我的解决方案如下:

为Python 2.7安装Microsoft Visual C ++(如@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")

productdir = os.path.join(toolsdir)

这就是我的情况下vcvarsall.bat所在的位置(检查,安装中的vcvarsall.bat)。

答案 13 :(得分:7)

当我尝试在我的python 3.5上安装numpy库时遇到了这个问题。解决方案是安装VS2015。我有VS2008,2012,2013,其中没有一个与python 3.5兼容。显然,较新版本的python依赖于较新版本的VS。

还要确保使用Visual Studio安装C ++ Common Tools。

enter image description here

答案 14 :(得分:6)

您可以从http://go.microsoft.com/?linkid=7729279下载免费的Visual C ++ 2008 Express Edition,它将在安装过程中设置VS90COMNTOOLS环境变量,因此可以使用兼容的编译器进行构建。

正如@PiotrDobrogost在评论中提到的,他对这个问题的回答详细说明了为什么Visual C ++ 2008是正确的构建方式,但随着Python的Windows版本迁移到更新版本的Visual Studio,这可能会改变:Building lxml for Python 2.7 on Windows

答案 15 :(得分:6)

我尝试了上述所有答案,并发现所有这些答案都不起作用,这可能是我使用Windows 8并安装了Visual Studio 2012.在这种情况下,这就是你所做的。

vcvarsall.bat文件位于此处: C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC

只需选择文件,然后复制即可。

然后转到此目录: C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools

并粘贴文件。然后,一切都应该好。

答案 16 :(得分:6)

我在Windows 7 x64上使用 Python 3.4.1 时遇到了这个问题,不幸的是我需要的软件包没有合适的exe或者我可以使用的轮子。这个系统需要一些“解决方法”,详见下文(底部的TLDR )。

使用Jaxrtech's answer above中的信息,我确定我需要Visual Studio C ++ 2010(sys.version返回MSC v.1600),所以我在答案中从链接安装了Visual C ++ 2010 Express,{{{ 3}}。我安装了所有更新,但正如您在下面看到的,这是一个错误。此时只应安装原始版本的Express(没有更新任何内容)。

vcvarsall.bat现已存在,但安装软件包query_vcvarsall raise ValueError(str(list(result.keys())))ValueError: [u'path']时出现新错误。此错误还有其他stackoverflow问题,例如http://go.microsoft.com/?linkid=9709949

我从该答案中确定,2010 Express仅安装了32位编译器。要获得64位(和其他)编译器,您需要安装Windows 7.1 SDK。见Errors while building/installing C module for Python 2.7

虽然这不会安装,但安装程序返回错误installation failed with return code 5100。我在以下链接找到了解决方案:http://msdn.microsoft.com/en-us/windowsserver/bb980924.aspx。简而言之,如果安装了较新版本的x86和x64 Microsoft Visual C ++ 2010 Redistributable,则它们与SDK安装程序中的版本冲突,需要先卸载。

然后安装了SDK,但我注意到C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin中的vcvars64.bat仍然不存在,也不存在其子文件夹。 vcvarsall.bat运行vcvars64批处理文件,所以没有它,python包仍然无法安装(我忘记了此时显示的错误)。

然后我在这里找到了一些说明:http://support.microsoft.com/kb/2717426 按照说明,我已经安装了Express和7.1 SDK,因此安装了SDK 7.1 SP1,并修复了缺少的头文件。然后我手动创建了内容为CALL setenv /x64的vcvars64.bat。我会在这里粘贴所有这些说明,这样他们就不会迷路。

  

第1步是下载Visual Studio Express 2010。

     

http://www.cryptohaze.com/wiki/index.php/Windows_7_Build_Setup#Download_VS_2010_and_Windows_SDK_7.1   是一个很好的起点。下载安装程序,然后运行它   (vc_web.exe)。您不需要SQL 2008附加下载。

     

您还需要64位的Windows SDK(目前为7.1)   编译器 - 除非你想做32位的构建,否则   完全支持...

     

http://www.microsoft.com/visualstudio/en-us/products/2010-editions/express很好   起点下载 - 你要运行winsdk_web.exe   下载时!

     

这里的默认安装就好了。

     

最后,下载并安装Windows SDK 7.1 SP1更新:   http://www.microsoft.com/en-us/download/details.aspx?id=8279

     

并且,修复丢失的头文件,VS2010 SP1。   http://www.microsoft.com/en-us/download/details.aspx?id=4422

     

而且,血腥的地狱,修复了VS2010 Express丢失的批处理文件。这个   是彻头彻尾的荒谬。

     

在C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ VC \ bin \ amd64中,   使用以下内容创建“vcvars64.bat”(您需要运行   作为管理员):

     

CALL setenv / x64

我的python包仍然没有安装(无法回忆错误)。然后我找到了一些说明(下面复制)以使用特殊的SDK 7.1命令提示符,请参阅:http://www.microsoft.com/downloads/en/confirmation.aspx?FamilyID=75568aa6-8107-475d-948a-ef22627e57a5

  

别介意这个问题。有人在这里注意到菜单上的这个项目:开始 - &gt;所有程序 - &gt; Microsoft Windows SDK v7.1 - &gt; Windows SDK 7.1命令提示符

     

这会运行一个批处理作业,它似乎为编译器设置了一个工作环境。在该提示符下,您可以键入“setup.py build”或“setup.py install”。

我按照说明打开了Windows SDK 7.1命令提示符,并用它在python包上运行easy_install。最后,成功!


<强> TLDR

  1. 安装Visual Studio Express 2010(最好不使用更新的可再发行组件或SQL服务器)。
  2. 安装Windows 7.1 SDK
  3. 安装SDK 7.1 SP1更新和VS2010 SP1头文件修复(可能不需要此步骤)。
  4. 使用内容C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\vcvars64.bat
  5. 手动创建CALL setenv /x64
  6. 开始 - &gt;所有程序 - &gt; Microsoft Windows SDK v7.1 - &gt; Windows SDK 7.1命令提示符打开特殊的x64命令提示符,然后可以与python / easy_install / pip / etc一起使用(包括那些virtual_envs)。

答案 17 :(得分:4)

使用此链接下载并安装Visual C++ 2015 Build Tools。它会自动下载visualcppbuildtools_full.exe并安装 Visual C ++ 14.0 ,而无需实际安装Visual Studio。安装完成后,重试pip安装,您将不会再收到错误消息。

我已经在以下平台和版本上对其进行了测试:

Python 3.6 on Windows 7 64-bit
Python 3.7 on Windows Server 2016 (64-bit system)
Python 3.8 on Windows 10 64-bit

答案 18 :(得分:3)

下面的步骤为我解决了这个问题,我试图用cython扩展创建设置。

  1. 安装适用于Python 2.7的Microsoft Visual C ++编译器
  2. 默认安装位置为@ C:\ Users \ PC-user \ AppData \ Local \ Programs \ Common \ Microsoft \ Visual C ++ 对于Python这可能实际上解决了问题,在继续之前测试一次。
  3. 如果失败,请检查VC ++中的位置 for python vcvarsall.bat文件位于
  4. 打开msvc9compiler.py 记事本中的distutils包文件。
  5. 在我的盒子里这是@ C:\ Anaconda2 \ Lib \ distutils \ msvc9compiler.py find_vcvarsall函数 在此文件中,通过打印出版本来确定VC的版本 论点。对于Python 2.7,它可能是9.0
  6. 现在创建一个 环境变量VS90COMNTOOLS,指向 C:\ Users \ PC-user \ AppData \ Local \ Programs \ Common \ Microsoft \ Visual C ++ for Python \ 9.0 \ VC \ bin
  7. 出于某种原因,distutils期待 vcvarsall.bat文件在VC目录下,但VC ++用于python工具 将它放在9.0的根目录中要解决此问题,请删除&#34; VC&#34;来自 path.join(大约在第247行附近)

    #productdir = os.path.join(toolsdir, os.pardir, os.pardir, "VC") productdir = os.path.join(toolsdir, os.pardir, os.pardir)

  8. 以上步骤为我解决了这个问题。

答案 19 :(得分:3)

如果你安装了mingw

pip install --global-option build_ext --global-option --compiler=mingw32 packagename

工作,强制pip使用mingw编译器而不是Microsoft编译。有关详细信息,请参阅此处https://github.com/pypa/pip/issues/18(上一篇文章)。

答案 20 :(得分:3)

2016年解决此问题的最简单方法是安装Chocolatey,然后安装vcpython27包。打开Powershell:

> iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))
> choco install python2 -y
> choco install vcpython27 -y

答案 21 :(得分:3)

http://www.microsoft.com/en-us/download/details.aspx?id=44266上用于Python 2.7的Microsoft Visual C ++编译器不是解决方案吗?

答案 22 :(得分:3)

我尝试了很多解决方案,但只有一个解决方案适用于我,安装Microsoft Visual Studio 2008 Express C ++。

我在用C编写的Python 2.7模块中遇到了这个问题(yEnc,它与MS VS有其他问题)。请注意,Python 2.7是使用MS VS 2008版本而不是2010版本构建的!

尽管它是免费的,但由于MS正在推广VS 2010,因此很难找到它。 尽管如此,MSDN官方非常直接的链接仍然有效:检查https://stackoverflow.com/a/15319069/2227298下载链接。

答案 23 :(得分:2)

我遇到了同样的问题并且此刻已经解决了。

&#34;谷歌&#34;告诉我,我需要安装&#34; Microsoft Visual C ++编译器for Python 2.7&#34;。我不仅安装了该工具,还安装了Visual C ++ 2008 Reditributable,但它没有帮助。然后我尝试安装Visual C ++ 2008 Express Edition。问题已经消失了!

尝试安装Visual C ++ 2008 Express Edition!

答案 24 :(得分:2)

我不知道是否为时已晚,但我发现Microsoft Visual C++ Compiler for Python 2.7内容为

  

如果需要此编译器软件包,您将收到的典型错误消息是无法找到vcvarsall.bat

希望这有帮助!

答案 25 :(得分:1)

你可以使用easy_install而不是pip它对我有效。

答案 26 :(得分:1)

如果您希望在安装Visual Studio的Windows机器上安装pyodbc,则另一个选项是使用二进制分发手动安装pyodbc。

如果您对正在使用的计算机没有管理员权限并且正在尝试设置virtualenv,则此功能特别有用。

步骤:

  1. here下载最新的Windows安装程序(pyodbc-X.X.X.win-Y-py2.7.exe)
  2. 使用7-Zip(或WinRAR或其他)
  3. 打开安装程序可执行文件
  4. 提取pyodbc.pyd和pyodbc-X.X.X-py2.7.egg-info并将它们放入[python installation directory or virtualenv]\Lib\site-packages
  5. 没有第4步:)

答案 27 :(得分:1)

调用import setuptools会破坏补丁distutils以强制与Visual Studio兼容。手动调用vcvars32.bat将设置虚拟环境并防止编译器将抛出的其他常见错误。该文件位于

  

“C:\ Program Files(x86)\ Microsoft Visual   工作室\ 2017 \社区\ VC \辅助\生成\ VCVARS32.BAT“

for VS 2017。

答案 28 :(得分:1)

我尝试了以上所有答案,但对我没有用。 我使用的是Windows 10并安装了Visual Studio 2010 在我的情况下,需要将vcvars64.bat添加到C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64

下面的

是vcvars64.bat:

CALL "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64

如果您未安装,请安装Microsoft SDK 7.1,然后重新运行pip install dulwich

答案 29 :(得分:1)

MS V ++ ++版本的详尽列表distutils 正式支持的安装版本(以及setuptools 以及如何使用可以在

找到

<强> https://wiki.python.org/moin/WindowsCompilers

它还指定了哪个官方Win32 Python版本需要哪个VC ++版本。 请注意,MinGW不受官方支持(详见下文)。

简而言之:

  • 对于每个版本,都有一个开箱即用的特定Visual Studio版本。
  • 对于独立SDK,通常需要从SDK提示符运行安装(=设置环境变量)。
    • 对于某些人来说,这个要求可以通过一次性调整来解除,这种调整没有副作用。
  • setuptools支持一些不寻常的VC ++版本,而不是distutils
  • MinGW 被称为“工作”,但仅适用于x86。 https://bugs.python.org/issue4709表示其支持的问题在于MinGW本身和甚至自Python 3.5以来,x86一定存在问题。

答案 30 :(得分:1)

@monkey给出的答案是正确答案之一,但它不完整。

如果您想使用MinGW,您应该选择C,C ++以及MinGW安装过程中建议的其他开发工具来获取“make.exe”。

您还必须在env。

中将路径设置为make.exe

要完成答案,请按以下步骤操作:

  1. 将mingw32的bin目录添加到环境变量
  2. C:\Programs\MinGW\bin;C:\Programs\MinGW\msys\1.0\bin;附加到路径
  3. 编辑(如果不存在,则创建)位于distutils.cfg的{​​{1}}文件为:

    C:\Python26\Lib\distutils\distutils.cfg
  4. 确保通过打开新的cmd.exe来设置环境变量。

答案 31 :(得分:1)

https://www.visualstudio.com安装Visual Studio 2015社区版, 然后

for Python 3.4

set VS100COMNTOOLS=%VS140COMNTOOLS% && pip install XX

答案 32 :(得分:1)

转到此处:http://docs.continuum.io/anaconda/install.html#windows-install

有安装anaconda的说明,它将提供GUI和大多数软件包的静默安装,这些软件包似乎是http://www.scipy.org/引起此问题的。我在这里https://www.microsoft.com/en-us/download/details.aspx?id=44266知道2.7的解决方案,但我没有看到Python 3.4的选项。下载并安装Anaconda后,您应该可以从scipy导入大部分需要的软件包。

希望这可以帮助一些人。给了我45分钟的搜索帖子和网站。

编辑:只是想注意操作系统符号旁边的GUI页面上有一个Python34链接。

答案 33 :(得分:1)

使用Python 3.4,依赖项是在Visual Studio 2010上。安装Visual C ++ 2010 Express为我解决了这个问题。

尝试使用我碰巧没有工作的VS 2008或2013安装。

答案 34 :(得分:1)

最快的解决方案

如果你有 python 3.4.x ,解决方案就是安装 VC ++ 2010因为它用于将自身编译成。

https://www.visualstudio.com/en-us/downloads#d-2010-express

我的python版本是 win32上的MSC v.1600 32位(英特尔)

在Windows8上正常运行

答案 35 :(得分:1)

我有同样的错误(我发现它很愚蠢,并且在错误消息中没有任何帮助)并且继续遇到问题,尽管有可用的C编译器。

令人惊讶的是,最终为我工作的只是将pip和setuptools升级到最新版本。希望这可以帮助其他人。

答案 36 :(得分:0)

当我尝试在Windows 10中安装pandas时遇到了同样的错误。在搜索了几个解决方案之后,我最终使用了滚轮。

首先,将pip升级到最新版本:

easy_install install -U pip

第二,安装轮子:

pip install wheel

第三步,下载包的whl文件并安装它:

pip install [xxx].whl

到目前为止,我认为wheel是在Windows上安装Python包的最佳方式。

答案 37 :(得分:0)

http://www.stickpeople.com/projects/python/win-psycopg/

从上面的链接安装适当的文件解决了我的问题。

提及:Jason Erickson [jerickso@stickpeople.com]。他为Windows用户管理这个页面非常好。

答案 38 :(得分:0)

答案 39 :(得分:-1)

我找到了一种更简单的方法。只需从网站下载二进制包:http://www.lfd.uci.edu/~gohlke/pythonlibs' 例如: autopy3-0.51.1-cp36-cp36m-win32.whl(cp36表示Python 3.6) 下载它 并按文件的pip安装位置安装

答案 40 :(得分:-1)

我没有看到使用vswhere的任何答案,我认为这是自Visual Studio 15.2以来的正确方法。

这里是我如何运行vsvars64.bat(我猜它与vsvarsall相似)

def init_vsvars():
    cprint("")
    cprint_header("Initializing vs vars")
    vswhere_path = r"%ProgramFiles(x86)%/Microsoft Visual Studio/Installer/vswhere.exe"
    vswhere_path = path.expandvars(vswhere_path)
    if not path.exists(vswhere_path):
        raise EnvironmentError("vswhere.exe not found at: %s", vswhere_path)

    vs_path = common.run_process(".", vswhere_path,
                                 ["-latest", "-property", "installationPath"])
    vs_path = vs_path.rstrip()

    vsvars_path = os.path.join(vs_path, "VC/Auxiliary/Build/vcvars64.bat")
    # common.run_process(".", vsvars_path, [])
    os.system('"%s"' % vsvars_path)

run_process做了很多事情,但基本上归结为:

    output = ""
    process = subprocess.Popen(
        commandline,
        stdout=subprocess.PIPE,
        stderr=subprocess.STDOUT,
        universal_newlines=True)
    for stdout_line in iter(process.stdout.readline, ""):
        cprint(stdout_line)
        output += stdout_line
    process.stdout.close()

    return_code = process.wait()
    return output

答案 41 :(得分:-1)

此问题的最佳和详尽答案如下:https://blogs.msdn.microsoft.com/pythonengineering/2016/04/11/unable-to-find-vcvarsall-bat/

对于大多数情况,只需找到适合您所需python依赖项的.whl包,并使用pip安装它。

在最后一种情况下,您必须安装microsoft编译器并从源代码安装包。