windows - 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

时间:

更新:下面的评论指出这里的说明可能是危险的。 考虑使用 Visual C++ 2008速成版,而不使用下面的原始答案。 原始错误消息表示 Visual C++ 2008未安装正确

对于 Windows 安装:

在运行软件包安装的setup.py 时,python 2.7搜索已经安装的Visual Studio 2008. 技巧 python 可以使用一个更新 Visual Studio VS90COMNTOOLS 通过设置正确的路径环境变量在调用 setup.py 之前。

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

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

我找到了解决方案。我遇到了同样的问题,错误,安装'amara语'。 安装了 mingw32,但需要配置 distutils 。

  1. 我已经安装了 python 2.6.
  2. 我将mingw32安装到 C:programsmingw
  3. 将mingw32目录的bin添加到环境变量: 将 c:programsMinGWbin; 附加到英镑的路径
  4. 编辑( 如果不存在则创建) distutils.cfg 文件位于 C:Python26Libdistutilsdistutils.cfg 要成为:

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

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

至少我使用 Visual Studio C++ 编译器从其他答案中找到了我的解决方案,而不是通过mingw32路径来安装。

重要注意事项:

如果你使用的是 python 版本最近比 python 2.7 ( 特别是任何 python 3. x ), 你最有可能需要一个版本的Visual Studio C++ 2008版本。

详情见底部。

步骤:

  1. 下载并安装 Visual Studio C++ 2008速成版 ( 除非你在顶部的便笺后面) 。

    x64编译器的更新: 默认情况下,这将只给你一个 32位 编译器。 我学会了( 来自这里的是), 你可以下载专门Windows sdk为 Windows 7和. NET 框架 3.5 SP1它给你一个x64的编译器为 VC++ 2008 ( VC++ 9.0 ) 如果你需要它。 当你安装它时,你可以取消选中除 Developer Tools>> Visual C++ Compilers 这将使你不必安装你可能不需要的所有额外的SDK工具。

    tl;博士:如果你想x64编译器 VC++ 2008,下载专门 Windows sdk为 Windows 7和. NET 框架 3.5 SP1和取消除了 Developer Tools>> Visual C++ Compilers 安装过程中。

    英镑说明: 如果同时安装了 32和 64位 python,你还可以使用 virtualenv 创建单独的python 环境,这样你就可以使用来创建一个单独的环境,而不用去选择要使用的python 版本。

  2. 注意:很明显,你可以跳过这一切通过复制后几批处理文件根据 @srodriguex 这个答案。 如果这工作正常,否则,这里至少是我的工作。

    打开 cmd.exe

  3. 之前你尝试安装一些c扩展需要,运行以下批处理文件的VC++环境编译器加载到会话( 例如 。 环境变量,编译器的路径等。

    执行:

    • 32位 编译器:

      注意 : 32位 Windows 安装将只有 C:Program Files 预期

      "C:Program Files (x86)Microsoft Visual Studio 9.0Common7Toolsvsvars32.bat"

    • 64位 编译器:

      "C:Program Files (x86)Microsoft Visual Studio 9.0Common7Toolsvsvars64.bat"

      注意:是的,本机 64位 Program Files (x86) 编译器。 不要问我为什么。
      另外,如果你想知道 vcvars64.batvcvarsx86_amd64.bat 之间的区别,或者更重要的是,amd64x86_amd64 之间的区别,前者是本地 64位 编译器工具,后者是可以在 32位 Windows 安装上运行的64位 交叉编译器。

    更新:
    如果由于某种原因你得到了 error:.. . was unexpected at this time. 如果 ... 是一系列字符,那么你需要检查路径变量是否没有多余的引号,比如额外的引号或者乱码字符。 如果批处理文件在第一个位置无法理解,它将无法更新你的会话路径。

  4. 如果运行正常,你应该根据运行的命令获得以下消息之一:

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

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

  5. 现在,通过 python setup.py install 或者 pip install pkg-name 运行安装程序

  6. 希望你的手指和你的手指能在今天真正工作。

正在查找要使用的正确版本的VC++

新版本的python ( 至少 3.4.1 ) 使用新版本的Visual C++ 进行编译,如图screenshot所示。 重要 Visual C++ 使用正确的版本,编译后的图书馆将与你 python 版本。

由于 distilutils'get_build_version 防止混合(每警告 piotr ),你可能需要下载 Visual Studio的相应版本。

换句话说,上面的命令只能在启动 python 解释器时运行,你可以看到 MSC v.1500你可以尝试安装 Visual Studio C++ 2010,它对应于 python 3.4.1 MSCv.1600

我只有这个同样的问题,这里我将告诉我的故事希望它帮助别人同样的问题和拯救他们我只花了两个小时:

我已经在一个 Windows 7框中安装了 mingw ( G++ ( GCC ) 4.6.1和 python 2.7.3,正在尝试安装 PyCrypto 。

运行 setup.py 安装时,一切都由这个错误启动:


error: Unable to find vcvarsall.bat

通过将mingw指定为编译器的编译器后,很容易地解决了错误:


setup.py install build --compiler=mingw32

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


configure: error: cannot run C compiled programs.

事实证明我的anti-virus阻止新编译的执行. exe. 我只是禁用 anti-virus"驻留屏蔽"去下一个错误:


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

解决了它:"安装一个稍微旧版本的mingw或编辑 distutilscygwinccompiler 。py python 目录中的去除-mno-cygwin的所有实例。"( 来自的)

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

什么是怎么回事? python 模块可以部分用c编写或 C++ ( 通常用于速度) 。 如果你尝试用 Pip ( 或者 setup.py ) 安装这样的软件包,它必须从源代码编译那个 C/C++ 。 箱,pipbrazenly假设你微软 Visual C++ 安装编译器。 如果你没有它,你将看到这个神秘的错误信息"错误: 找不到 vcvarsall 。bat"。

规定的解决方案是安装一个 C/C++ 编译器,微软 Visual C++ 或者 MinGW ( open-source项目) 。 然而,安装和配置都很难。 ( 编辑 2014: 微软为 python 2.7发布了一个特殊的C++ 编译器 )

最简单的解决方案是使用christoph Windows Gohlke安装(. msi ) python 包的流行。 他为 python 2.x 和 3. x, 32位和 64位构建安装程序。 你可以从 http://www.lfd.uci.edu/~gohlke/pythonlibs/编辑器下载它们


如果你也认为"错误: 找不到vcvarsall。蝙蝠"是一个ludicrously神秘的和无用的信息,然后请评论 Bug http://bugs.python.org/issue2943 换成一个更有用的和用户友好的消息。

为了进行比较,ruby 附带一个软件包管理器 Gem,并提供一个 quasi-official C/C++ 编译器 DevKit 。 如果你试图安装一个没有它的软件包,你会看到这个有用的有用的有用消息:

请更新你的路径以包括构建工具,或者从 http://rubyinstaller.org/downloads web 中下载 DevKit,并按照 http://github.com/oneclick/rubyinstaller/wiki/Development-Kit 。xml的说明进行操作

你可以阅读更长的咆哮 python 包装在 http://stackoverflow.com 13445719/284795

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

微软现在提供了一个绑定编译器和标题只是能够编译 python 扩展,难忘的网址:

Visual C++ python 2.7的编译器

http://aka.ms/vcpython27

这是一个相对小的软件包;85 MB下载,没有管理员权限可以安装,不需要重新启动。 这个名字有点误导,编译器会为任何工作 python 最初版本编译与 Visual C++ 2008,不仅 python 2.7.

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

原始公告到distutils列表列表:

微软为 python 2.7发布了一个编译器包,使得人们可以更容易地在 Windows 上构建和分发他们的C 扩展模块。 微软 Visual C++ 编译器为 python 2.7(a。k。一个。 VC9 ) 可以从:http://aka.ms/vcpython27 web

这个软件包包含构建 python 2.7 32位 和 64位 ( 注意,某些扩展模块需要 3个参与方依赖项,如不包括的OpenSSL或者 libxml2 )的C 扩展模块所需的所有工具和头文件。 使用 Visual C++ 2008构建的python的其他版本也被支持,所以"python 2.7"只是广告- 它可以在 2.6和 3.2中正常工作。

注意,你需要安装 setuptools 6.0或者更新版本的 。 要安装的项目必须使用 setuptools.setup(),而不是 distutils,否则auto-detection将不起作用。

微软说他们想要保持URL的稳定,这样自动化的脚本可以很容易地引用它。

我有 python 2.73和 Windows 7. The 解决方案为我工作:

  1. 将mingw32目录的bin添加到环境变量: 附加与 C:programsmingwbin;路径
  2. 创建了 distutils.cfg,位于 C:Python27Libdistutilsdistutils.cfg 包含:

    
    [build]
    compiler=mingw32
    
    

要处理MinGW不再识别-mno-cygwin标志,请将 C:Python27Libdistutilscygwincompiler.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))

看起来它在寻找 -c mingw32 编译器,所以你可以用来描述编译器类型,因为你有 msys


python setup.py install -c mingw32

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

vcvarsall.bat 文件位于以下位置: C:Program Files (x86)Microsoft Visual Studio 11.0VC

只需选择该文件,然后复制它。

然后转到这里目录: C:Program Files (x86)Microsoft Visual Studio 11.0Common7Tools

粘贴文件。然后,所有的都应该很好。

...