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

当前回答

我不知道是否为时已晚,但我找到了Microsoft Visual C++Compiler for Python 2.7,该版本

如果需要此编译器包,您将收到的典型错误消息是Unable to find vcvarsall.bat

希望这有帮助!

其他回答

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

将mingw32的bin目录添加到环境变量:用C:\programs\mingw\bin追加PATH;已创建distutils.cfg,位于C:\Python27\Lib\distutils\distutils.ccfg,包含:[生成]编译器=mingw32

要处理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))

更新:评论指出,此处的说明可能很危险。请考虑使用Visual C++2008速成版或专门构建的Microsoft Visual C++编译器Python版(详细信息),不要使用下面的原始答案。原始错误消息表示未安装所需版本的Visual C++。


对于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。

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

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

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

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

还要确保Visual Studio中安装了C++通用工具。

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

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

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

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

将mingw32的bin目录添加到环境变量中追加C:\Programs\MinGW\bin;C: \Programs\MinGW\msys\1.0\bin;到PATH将位于C:\Python26\Lib\distutils\distutils.cfg的distutils.cfg文件编辑(如果不存在则创建)为:[生成]编译器=mingw32

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