关于python:错误:找不到vcvarsall.bat

error: Unable to find vcvarsall.bat

我尝试安装python包dulwich:

1
pip install dulwich

但我收到一条神秘的错误信息:

1
error: Unable to find vcvarsall.bat

如果我尝试手动安装程序包,也会发生同样的情况:

1
2
3
4
> python setup.py install
running build_ext
building 'dulwich._objects' extension
error: Unable to find vcvarsall.bat


更新:评论指出这里的说明可能很危险。考虑使用Visual C++ 2008 Express版或专用的微软Visual C++编译器进行Python(详细信息),而不使用下面的原始答案。原始错误消息意味着未安装VisualC++的所需版本。

对于Windows安装:

在为包安装运行setup.py时,python 2.7会搜索已安装的Visual Studio 2008。在调用setup.py之前,可以通过在VS90COMNTOOLS环境变量中设置正确的路径来欺骗python使用新的Visual Studio。

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

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

警告:如下面所述,如果您试图编译Python模块,则此答案不太可能工作。

有关详细信息,请参见在Windows上为python 2.7构建lxml。


我找到了解决办法。我也有同样的问题和错误,安装了"Amara"。我安装了mingw32,但需要配置distutils。

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

    1
    2
    [build]
    compiler=mingw32
  • 现在运行easy_install.exe amara

  • 打开一个新的cmd.exe,确保设置了环境。


    您可以从http://www.lfd.uci.edu/~gohlke/pythonlibs安装编译版本/


    如果你想用VisualStudioC++来代替MIW…

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


    It is important to use the corresponding version of the Visual C++ compiler that Python was compiled with since distilutils's get_build_version prevents mixing versions (per Piotr's warning).

    • 黄色(top)是Python 2.7,用MSC V.1500(VisualStudioC++ 2008)编译。
    • 红色(底部)是Python 3.4.1,用MSC V.1600编译(VisualStudioC++ 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

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    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)
  • 从上一步下载并安装VisualStudioC++的相应版本。下面列出了VC++特定版本的附加说明。

    Visual Studio C++ 2008注释

    只需32位编译器,下载VisualStudio C++ 2008 Express版。

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


    • Uncheck everything except Developer Tools >> Visual C++ Compilers to save time and disk space from installing SDK tools you otherwise don't need.

    Visual Studio C++ 2010注释

    据微软称,如果安装了Visual Studio 2010 SP1,它可能已经删除了VC++的编译器和库。如果是这种情况,请下载Visual C++ 2010 SP1编译器更新。

    Visual Studio C++ 2015注释

    如果不需要VisualStudioIDE,请下载VisualStudioC++ 2015构建工具。

    Visual Studio C++ 2017注释

    如果不需要Visual Studio IDE,请下载Visual Studio 2017的生成工具。

    建议:如果您同时安装了32位和64位的python,您可能还希望使用virtualenv来创建单独的python环境,这样您就可以一次使用一个或另一个环境,而不必费心选择要使用的python版本的路径。

  • According to @srodriguex, you may be able to skip manually loading the batch file (Steps 4-6) by instead copying a few batch files to where Python is searching by following this answer. If that doesn't work, here are the following steps that originally worked for me.

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

    更新:如果由于某种原因,您得到的是error: ... was unexpected at this time.,其中...是一些字符系列,那么您需要检查路径变量是否没有任何无关字符,如额外引号或离群字符。如果批处理文件一开始就没有意义,它将无法更新会话路径。

  • 如果进展顺利,根据VC++的哪个版本和运行的命令,应该会收到以下消息之一:

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

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

  • 现在,通过python setup.py installpip install pkg-name运行安装程序。

  • 希望并交叉你的手指,行星是正确的排列为VC++合作。


  • 发生什么事?Python模块可以用C或C++编写(通常用于速度)。如果你尝试用PIP(或者EDCOX1,6)来安装这样的包,它必须从源编译C/C++。出框后,PIP会不假思索地假设你安装了微软Visual C++的编译器。如果没有,您将看到这个神秘的错误消息"错误:找不到vcvarsall.bat"。

    指定的解决方案是安装C/C++编译器,微软Visual C++或MinGW(开源项目)。然而,安装和配置两者都是非常困难的。(编辑2014:微软已经为Python 2.7发布了一个特殊的C++编译器)

    最简单的解决方案是将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上对该错误进行评论,以将其替换为更有用和用户友好的消息。

    为了比较,红宝石船有一个包管理器GEM,并提供了一个准官方C/C++编译器,DevKit。如果您试图安装一个没有它的软件包,您会看到这条有用的、友好的有用消息:

    Please update your PATH to include build tools or download the DevKit from http://rubyinstaller.org/downloads and follow the instructions at http://github.com/oneclick/rubyinstaller/wiki/Development-Kit

    您可以在https://stackoverflow.com/a/13445719/284795上阅读关于python打包的较长文章。


    您需要安装一个与用于构建Python的编译器兼容的Microsoft编译器。这意味着你需要Visual C++ 2008(或者更新,有一些调整)。

    微软现在提供了一个捆绑的编译器和头文件,以便能够在令人难忘的URL上编译python扩展:

    Microsoft Visual C++ Compiler for Python 2.7

    http://aka.ms/vcpython27

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

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

    从原始公告到distutils列表:

    Microsoft has released a compiler package for Python 2.7 to make it easier for people to build and distribute their C extension modules on Windows. The Microsoft Visual C++ Compiler for Python 2.7 (a.k.a. VC9) is available from: http://aka.ms/vcpython27

    This package contains all the tools and headers required to build C extension modules for Python 2.7 32-bit and 64-bit (note that some extension modules require 3rd party dependencies such as OpenSSL or libxml2 that are not included). Other versions of Python built with Visual C++ 2008 are also supported, so"Python 2.7" is just advertising - it'll work fine with 2.6 and 3.2.

    请注意,您需要安装setuptools6.0或更高版本(在下载页的系统要求中列出)。您正在安装的项目必须使用setuptools.setup(),而不是distutils,否则自动检测将无法工作。

    微软已经声明他们希望保持URL的稳定,这样自动化的脚本就可以很容易地引用它。


    我刚刚遇到了同样的问题,所以我会在这里讲述我的故事,希望它能帮助其他人解决同样的问题,并节省我刚刚花的几个小时:

    我将mingw(g++(gcc)4.6.1)和python 2.7.3放在Windows7的盒子中,并尝试安装pycrypto。

    在运行setup.py install时,它都是以此错误开始的:

    1
    error: Unable to find vcvarsall.bat

    在谷歌搜索错误后,通过指定mingw作为选择的编译器很容易解决:

    1
    setup.py install build --compiler=mingw32

    问题是我得到了一个不同的错误:

    1
    configure: error: cannot run C compiled programs.

    原来我的反病毒程序阻止了一个新编译的.exe的执行。我刚刚禁用了防病毒"常驻盾",然后转到下一个错误:

    1
    2
    cc1.exe: error: unrecognized command line option '-mno-cygwin'
    error: command 'gcc' failed with exit status 1

    这解决了它:"要么安装稍旧版本的mingw,要么在python目录中编辑distutilscygwinccompiler.py以删除-mno cygwin的所有实例。"(从这里)

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


    看起来它在寻找VC编译器,所以您可以尝试使用-c mingw32来提到编译器类型,因为您有MSY

    1
    python setup.py install -c mingw32


    我有python 2.73和windows 7。我的解决方案是:

  • 将mingw32的bin目录添加到环境变量:用c:\programs\MinGW\bin;附加路径
  • 创建distutils.cfg,位于C:\Python27\Lib\distutils\distutils.cfg处,包含:

    1
    2
    [build]
    compiler=mingw32
  • 要处理mingw不再识别-mno cygwin标志,请删除c:python27libdistuilscygwincompiler.py行322到326中的标志,如下所示:

    1
    2
    3
    4
    5
    6
    7
      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))

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

    我(在2015年)结合这些因素得出了这个结论:

  • 从HTTP:/AKA.MS/VCPYthON27的Python 2.7的微软Visual C++编译器

  • 使用distutils.core.setup()的旧包

  • 尝试使用python setup.py build,而不是使用pip

  • 如果使用最新版本的PIP,它将强制(monkeypatch)包使用安装工具,即使其setup.py调用distuils。但是,如果您不使用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:设置环境变量

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

    1
    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中,请在生成之前激活它。


    也许有人会感兴趣,以下是PY2Exe软件包。(我有Windows 7 64位和可移植的python 2.7、Visual Studio 2005 Express以及Windows 7和.NET Framework 4的Windows SDK)

    1
    set VS90COMNTOOLS=%VS80COMNTOOLS%

    然后:

    1
    python.exe setup.py install


    我花了近2天时间在我的python 3.4 64位版本:python 3.4.3(v3.4.3:9b73f1c3e601,2015年2月24日,22:44:40)【msc v.1600 64位(amd64)】中解决这个问题。

    解决方案1,硬:(在阅读之前,请阅读下面的第一个解决方案2)最后,这是帮助我的:

  • 安装Visual C++ 2010 Express
  • 安装Microsoft Windows SDK v7.1 for Windows 7
  • 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的手动文件vcvars64.bat或其他路径,具体取决于安装位置。
  • (这似乎是可选的)安装微软Visual Studio 2010 Service PACK 1,连同微软Visual C++ 2010 Service Poad 1编译器更新,用于Windows SDK 7.1
  • 在那之后,我试着用pip install numpy,但收到了以下错误:

    1
    2
    3
    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

    我把mfinfo改为None,在C:\Python34\Lib\distutils\msvc9compiler.py中,根据这个https://stackoverflow.com/a/23099820/4383472

  • 最后,在pip install numpy命令之后,我的avast antivirus试图干扰安装过程,但我很快就禁用了它。
  • 花了很长时间——numpy编译了几分钟,我甚至认为有错误,但最后一切都正常。

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

  • 从该站点下载numpy?1.9.2+mkl?cp34?none?win_amd64.whl(如果您有python 3.4 64位)
  • 在命令提示符或PowerShell中,使用pip pip install numpy?1.9.2+mkl?cp34?none?win_amd64.whl安装它(或根据命令提示符的打开方式安装文件的完整路径)

  • 在我的python 3.5上安装numpy库时遇到了这个问题。解决方案是安装VS2015。我有VS2008、2012、2013,它们都不兼容Python3.5。显然,更新版本的python依赖于更新版本的vs.

    还要确保用VisualStudio安装C++常用工具。

    enter image description here


    我想在Python2.7下的Windows10上运行pysph,但找不到vcvarsall.bat(来自distutils)

    我的解决方案如下:

    为Python 2.7安装微软Visual C++(如@米迦勒建议)

    在Windows 10上,它被安装到(我的用户名是Andreas):

    1
    C:\Users\Andreas\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0

    将环境变量VS90COMNoToT安装到Python 2.7的VisualC++的安装路径(见上面的路径)。

    如果仍然不起作用,则在模块中修改

    1
    C:/Python27/lib/distutils

    文件msvc9compiler.py。在其中查找函数find_vcvarsall并进行以下修改。

    更换管路:

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

    具有

    1
    productdir = os.path.join(toolsdir)

    这是vcvarsall.bat在我的案例中的位置(请检查,vcvarsall.bat在您的安装中的位置)。


    我在Windows7x64上使用python 3.4.1时遇到了这个问题,不幸的是,我需要的包没有我可以使用的合适的exe或轮子。这个系统需要一些"解决方法",具体如下(以及底部的TLDR)。

    使用JAXRTEC上面的答案,我决定我需要VisualStudioC++ 2010(SysScript版本返回MSC V.1600),所以我在他的回答中安装了Visual C++ 2010 Express,这是HTTP://G.MySo.COM/?linkid=9709949。我安装了所有更新,但正如您在下面看到的,这是一个错误。此时只应安装Express的原始版本(不更新任何内容)。

    vcvarsall.bat现在存在,但在安装包query_vcvarsall raise ValueError(str(list(result.keys())))ValueError: [u'path']时出现了一个新错误。此错误还存在其他stackoverflow问题,例如在为python 2.7构建/安装C模块时出错。

    我根据这个答案确定2010 Express只安装32位编译器。要获得64位(和其他)编译器,需要安装Windows7.1sdk。请参阅http://msdn.microsoft.com/en-us/windowsserver/bb980924.aspx

    不过,这不会为我安装,安装程序返回错误installation failed with return code 5100。我在以下链接找到了解决方案:http://support.microsoft.com/kb/2717426。简而言之,如果安装了X86和X64微软Visual C++ 2010可重分发版本的新版本,它们与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.1sdk,所以安装了sdk 7.1sp1,并修复了丢失的头文件。然后我手动创建了内容为CALL setenv /x64的vcvars64.bat。我会把所有的指示贴在这里,这样他们就不会迷路了。

    Step 1 is to download Visual Studio Express 2010.

    http://www.microsoft.com/visualstudio/en-us/products/2010-editions/express
    is a good place to start. Download the installer, and run it
    (vc_web.exe). You don't need the SQL 2008 additional download.

    You'll also need the Windows SDK (currently 7.1) for the 64-bit
    compilers - unless you want to do 32-bit only builds, which are not
    fully supported...

    http://www.microsoft.com/en-us/download/details.aspx?id=8279 is a good
    starting point to download this - you'll want to run winsdk_web.exe
    when downloaded!

    The default install here is just fine.

    Finally, download and install the Windows SDK 7.1 SP1 update:
    http://www.microsoft.com/en-us/download/details.aspx?id=4422

    And, to fix missing header file, VS2010 SP1.
    http://www.microsoft.com/downloads/en/confirmation.aspx?FamilyID=75568aa6-8107-475d-948a-ef22627e57a5

    And, bloody hell, fix the missing batch file for VS2010 Express. This
    is getting downright absurd.

    In C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64,
    create"vcvars64.bat" with the following (you will need to be running
    as administrator):

    CALL setenv /x64

    我的python包仍然没有安装(无法调用错误)。然后我找到了一些使用特殊的sdk 7.1命令提示的说明(复制在下面),请参阅:https://mail.python.org/pipermail/distutils-sig/2012-february/018300.html

    Never mind this question. Somebody here noticed this item on the menu: Start->All Programs->Microsoft Windows SDK v7.1 ->Windows SDK 7.1 Command Prompt

    This runs a batch job that appears to set up a working environment for the compiler. From that prompt, you can type"setup.py build" or"setup.py install".

    我按照说明打开了windows sdk 7.1命令提示符,并用它在python包上运行easy-install。最后,成功!

    TLDR;

  • 安装Visual Studio Express 2010(最好不安装更新的可再发行文件或SQL Server)。
  • 安装Windows 7.1 SDK
  • Instal SDK 7.1 SP1更新和VS2010 SP1头文件修复(可能不需要此步骤)。
  • 手动创建内容为CALL setenv /x64C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\vcvars64.bat
  • start->all programs->microsoft windows sdk v7.1->windows sdk 7.1 command prompt打开专用的x64 command prompt,可与python/easy_install/pip/etc(包括virtual_envs)一起使用。

  • 你可以从HTTP://Go.MySo.com中下载免费的Visual C++ 2008快速版本。linkid=7729279,它将在安装期间设置vs90comntools环境变量,因此使用兼容的编译器生成。

    正如在评论中提到的@ PioTrdBoopRoST,他对这个问题的回答详细地说明了VisualC++ 2008是如何构建的,但是当Python的Windows构建移到VisualStudio的新版本时,这可以改变:在Windows上为Python 2.7构建LXML。


    我尝试了以上所有的答案,发现所有的答案都不起作用,这可能是我在使用Windows8并安装了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

    然后粘贴文件。然后,一切都会好起来的。


    我尝试了很多解决方案,但只有一个为我工作,安装微软Visual Studio 2008 Express C++。

    我在用C语言编写的python 2.7模块中遇到了这个问题(yenc,它与ms-vs有其他问题)。请注意,python 2.7是用MS和2008版本构建的,而不是2010版本!

    尽管它是免费的,但很难找到,因为微软正在推广vs 2010。不过,msdn官方的"非常直接"链接仍在运行:请查看https://stackoverflow.com/a/15319069/2227298了解下载链接。


    如果你安装了Mingw

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

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


    是微软Python 2.7的Visual C++编译器,它在HTTP://www.微软.CON/EN-US/DeWordPosiv/Delials.ASPX?ID=44266不是解决方案?


    在2016年解决这一问题的最简单方法是安装巧克力,然后安装vcpython27包。打开PowerShell:

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

    下面的步骤为我修复了这个问题,我尝试使用Cython扩展创建安装程序。

  • 为Python 2.7安装微软Visual C++编译器
  • 默认安装位置为@C\用户PC用户AppDATaStudioStudioCube 微软Visual C++对于python,这实际上可以解决问题,在继续之前测试一次。
  • 如果失败,请检查vc中的位置++对于python vcvarsall.bat文件位于
  • 打开msvc9compiler.py记事本中distutils包的文件。
  • 在我的盒子里这是@C:anaconda2libdistutilsmsvc9compiler.py find_vcvarsall函数在此文件中,通过打印出版本来确定vc的版本争论。对于python 2.7,可能是9.0
  • 现在创建一个环境变量vs90comntools,指向C\用户PC用户AppDATaStudioStudioCube 微软Visual C++对于python9.0vcin
  • 出于某种原因,distutils希望vcvarsall.bat文件应在vc dir中,但vc++用于python工具如果它位于9.0的根目录中,要修复此问题,请从path.join(大致围绕247行)


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

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


    我也遇到了同样的问题,现在已经解决了。

    "谷歌"告诉我,我需要安装"Python 2.7的微软Visual C++编译器"。我不仅安装了工具,还安装了Visual C++ 2008 RealTimeBubTable,但没用。然后我尝试安装Visual C++ 2008 Express版。问题已经解决了!

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


    我不知道为时已晚,但是我找到了Python 2.7的微软Visual C++编译器。

    The typical error message you will receive if you need this compiler package is Unable to find vcvarsall.bat

    希望这有帮助!


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

    如果您想使用MinGW,您应该选择在MinGW安装过程中建议的C、C++和其他开发工具,也可以得到"Suff.exe"。

    您还必须在env中将路径设置为make.exe。

    要完成他的回答,请执行以下步骤:

  • 将mingw32的bin目录添加到环境变量中
  • C:\Programs\MinGW\bin;C:\Programs\MinGW\msys\1.0\bin;附加到路径
  • 编辑(如果不存在则创建)位于C:\Python26\Lib\distutils\distutils.cfgdistutils.cfg文件为:

    1
    2
    [build]
    compiler=mingw32
  • 确保通过打开新的cmd.exe来设置环境变量。


    如果要在没有安装Visual Studio的Windows设备上安装pyodbc,另一个选项是使用二进制分发版手动安装pyodbc。

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

    步骤:

  • 从这里下载最新的Windows Installer(pyodbc-x.x.x.win-y-py2.7.exe)
  • 使用7-zip(或winrar等)打开安装程序可执行文件
  • 提取pyodbc.pyd和pyodbc-x.x.x-py2.7.egg-info,放在\Lib\site-packages中。
  • 没有步骤4:)

  • 对于python 3.4,依赖于Visual Studio 2010。安装Visual C++ 2010 Express为我解决了问题。

    诱使它使用我碰巧没用的VS 2008或2013安装。


    你可以使用简单的安装,而不是PIP,它对我很有用。


    尽管有一个C编译器可用,但我还是有同样的错误(我觉得这很愚蠢,并不像错误消息那样真正有用),并且仍然有问题。

    令人惊讶的是,最终对我有用的只是将PIP和安装工具升级到最新版本。希望这能帮助其他人。


    最快的解决方案:

    如果您有python 3.4.x,那么解决方案就是简单地安装因为它被用来编译自己。

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

    我的python版本是win32上的msc v.1600 32位(intel)]

    在窗口8上工作正常


    请访问:http://docs.continuum.io/anaconda/install.html Windows安装

    在http://www.scipy.org/上有安装anaconda的说明,它将提供一个GUI和大多数软件包的静默安装,这些软件包似乎导致了这个问题。我知道这里的2.7解决方案https://www.microsoft.com/en-us/download/details.aspx?ID=44266,但我没有看到Python3.4的选项。在下载和安装了Python之后,你应该能够从scipy导入你需要的大部分软件包。

    希望这能帮助一些人。我花了45分钟的时间来搜索帖子和网站。

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


    从https://www.VisualStudio.com安装Visual Studio 2015 Community Edition,然后

    对于Python 3.4

    set VS100COMNTOOLS=%VS140COMNTOOLS% && pip install XX


    distutils官方支持的MS V C++版本和安装变体的详细列表(有些由setuptools官方支持)以及如何使用它们可以在

    https://wiki.python.org/moin/windowscompilers

    它还指定了正式的win32 python版本需要哪个vc++版本。注意,Mingw并没有得到官方支持(详情见下文)。

    简言之:

    • 对于每个版本,都有一个现成的特定的Visual Studio版本。
      • 请注意,2012年之前的速成版不支持x64。尝试对x64使用一个会导致一个不明显的错误。
    • 对于独立的sdk,通常需要从sdk提示符(=set environment variables)运行安装。
      • 对某些人来说,这种要求可以通过一次性调整来解除,而这种调整不会产生对抗性的副作用。
    • setuptools支持一些不常见的VC++版本,而不是distutils
    • 明格被称为"工作",但只适用于x86。https://bugs.python.org/issue4709说,它的支持问题在于mingw本身,甚至x86自python 3.5以来也必然会有问题。

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

    以下是vcvars64.bat:

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

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


    调用import setuptools将monkey patch distutils强制与Visual Studio兼容。手动调用vcvars32.bat将设置虚拟环境,并防止编译器抛出其他常见错误。文件位于

    "C:\Program Files (x86)\Microsoft Visual
    Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat"

    对于VS 2017。


    当我试图在Windows10中安装pandas时,也出现了同样的错误。在寻找了几个解决方案后,我最终使用了轮子。

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

    1
    easy_install install -U pip

    其次,安装车轮:

    1
    pip install wheel

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

    1
    pip install [xxx].whl

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


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

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

    提及:Jason Erickson[[email protected]]。他为Windows用户管理这个页面相当好。


    我遵循了http://springflex.blogspot.ru/2014/02/how-to-fix-valueerror-when-trying-to.html的说明。但什么也没发生。然后,我按照建议http://blog.python.org/2012/05/recent-windows-changes-in-python-33.html安装了2010 Visual Studio Express(http://www.microsoft.com/VisualStudio/en-us/products/2010-editions/Visual-cpp-Express)。它帮助了我


    对于这个问题,最好和详尽的答案如下:https://blogs.msdn.microsoft.com/pythonengengineering/2016/04/11/unable-to-find-vcvarsall-bat/

    在大多数情况下,找到适合您所需的python依赖项的.whl包并用pip安装就足够了。

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


    我找到了一个更简单的方法。只需从以下网站下载二进制文件包:http://www.lfd.uci.edu/~gohlke/pythonlibs'例如:Autopy3?0.1.1?CP36?CP36M?win32.whl(cp36表示python 3.6)下载它并通过pip安装文件的安装位置


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

    下面是我运行vsvars64.bat的方法(我想它与vsvarsall类似)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    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)

    运行过程可以做很多事情,但基本上可以归结为:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        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