查看: 2860|回复: 9

error: Unable to find vcvarsall.bat

[复制链接]

22

主题

107

帖子

266

积分

中级会员

Rank: 3Rank: 3

积分
266
发表于 2018-9-19 09:35:27 | 显示全部楼层 |阅读模式
我试图安装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
回复

使用道具 举报

3

主题

31

帖子

83

积分

注册会员

Rank: 2

积分
83
发表于 2018-9-19 09:37:53 | 显示全部楼层
对于Windows安装:
在运行setup.py进行软件包安装时,Python 2.7会搜索已安装的Visual Studio 2008.您可以通过VS90COMNTOOLS在环境变量中设置正确的路径来欺骗Python使用较新的Visual Studio 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%
•        Visual Studio 2015(VS14): SET VS90COMNTOOLS=%VS140COMNTOOLS%
回复

使用道具 举报

4

主题

37

帖子

98

积分

注册会员

Rank: 2

积分
98
发表于 2018-9-19 09:38:31 | 显示全部楼层
我找到了解决方案。我有完全相同的问题,并且错误,安装'amara'。我安装了mingw32,但需要配置distutils。
1.        我已经安装了Python 2.6。
2.        我安装了mingw32 C:\programs\mingw\
3.        将mingw32的bin目录添加到环境变量:追加c:\programs\MinGW\bin;到PATH
4.        编辑(创建,如果不存在)distutils.cfg文件位于C:\Python26\Lib\distutils\distutils.cfg:
5.        [build]
compiler=mingw32
6.        现在运行easy_install.exe amara。
确保通过打开新设置来设置环境cmd.exe。
回复

使用道具 举报

5

主题

41

帖子

108

积分

注册会员

Rank: 2

积分
108
发表于 2018-9-19 09:39:29 | 显示全部楼层
回复

使用道具 举报

13

主题

53

帖子

131

积分

注册会员

Rank: 2

积分
131
发表于 2018-9-19 09:43:39 | 显示全部楼层
这是怎么回事?Python模块可以用C或C ++编写(通常用于加快速度)。如果您尝试使用Pip(或setup.py)安装此类软件包,则必须从源代码编译C / C ++。开箱即用,Pip假设您安装了Microsoft Visual C ++编译器。如果你没有它,你会看到这个神秘的错误消息“错误:无法找到vcvarsall.bat”。
解决方案是安装C / C ++编译器,Microsoft 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/下载它们
________________________________________
Ruby附带了一个包管理器Gem,并提供了一个准官方的C / C ++编译器DevKit。从http://rubyinstaller.org/downloads下载DevKit 并按照http://github.com/oneclick/rubyinstaller/wiki/Development-Kit上的说明进行操作
回复

使用道具 举报

15

主题

97

帖子

310

积分

论坛管理

Rank: 4

积分
310
发表于 2018-9-19 09:44:41 | 显示全部楼层
您需要安装Microsoft编译器,与用于构建Python的编译器兼容。这意味着您需要Visual C ++ 2008(或者更新,需要一些调整)。
微软现在提供一个捆绑的编译器和头只能够编译Python扩展,在好记的网址:
用于Python 2.7的Microsoft Visual C ++编译器
http://aka.ms/vcpython27
这是一个相对较小的包; 下载85MB,无需管理员权限即可安装,无需重启。这个名称有点误导,编译器适用于最初使用Visual C ++ 2008编译的任何Python版本,而不仅仅是Python 2.7。
如果您启动Python交互式提示或打印sys.version,请查找MSC版本字符串; 如果是,
Microsoft已经发布了Python 2.7的编译器包,使人们可以更轻松地在Windows上构建和分发C扩展模块。用于Python 2.7的Microsoft Visual C ++编译器(也称为VC9)可从以下网址获得:http://aka.ms/vcpython27
该软件包包含为Python 2.7 32位和64位构建C扩展模块所需的所有工具和头文件(请注意,某些扩展模块需要第三方依赖项,如OpenSSL或libxml2,不包括在内)。还支持使用Visual C ++ 2008构建的其他Python版本,因此“Python 2.7”只是广告 - 它可以在2.6和3.2下正常工作。
请注意,您需要安装setuptools6.0或更新版本(在下载页面的系统要求中列出)。您正在安装的项目必须使用setuptools.setup(),distutils否则自动检测将无法使用。
Microsoft已声明他们希望保持URL稳定,以便自动脚本可以轻松地引用它
回复

使用道具 举报

10

主题

72

帖子

180

积分

注册会员

Rank: 2

积分
180
发表于 2018-9-19 09:47:17 | 显示全部楼层
我遇到了同样的问题,希望它可以帮助其他人解决同样的问题,并节省他们几个小时:
我在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的所有实例。”

回复

使用道具 举报

9

主题

74

帖子

185

积分

注册会员

Rank: 2

积分
185
发表于 2018-9-19 09:48:49 | 显示全部楼层
我的环境是python 2.73和Windows 7.对我有用的解决方案是:
1.        新增的mingw32的bin目录到环境变量:追加PATH与C:\programs\mingw\bin;
2.        创建的distutils.cfg位于C:\Python27\Lib\distutils\distutils.cfg包含:
3.        [build]
compiler=mingw32
要处理MinGW不再识别-mno-cygwin标志,请删除C:\ Python27 \ Lib \ distutils \ cygwincompiler.py第322行到第326行中的标志,因此它看起来像这样:
  1.   self.set_executables(compiler='gcc -O -Wall',
  2.                          compiler_so='gcc -mdll -O -Wall',
  3.                          compiler_cxx='g++ -O -Wall',
  4.                          linker_exe='gcc',
  5.                          linker_so='%s %s %s'
  6.                                     % (self.linker_dll, shared_option,
  7.                                        entry_point))
复制代码

回复

使用道具 举报

11

主题

80

帖子

199

积分

注册会员

Rank: 2

积分
199
发表于 2018-9-19 09:49:54 | 显示全部楼层
查看setup.py您要安装的软件包的文件。如果它是较旧的包,则可能是导入distutils.core.setup()而不是setuptools.setup()。
我参与了这个(2015年)这些因素的组合:
1.        来自http://aka.ms/vcpython27的Microsoft Visual C ++编译器for Python 2.7
2.        一个较旧的包使用 distutils.core.setup()
3.        尝试做python setup.py build而不是使用pip。
如果你使用最新版本的pip,它会强制(monkeypatch)包使用setuptools,即使它setup.py调用了distutils。但是,如果您不使用pip,而只是正在执行python setup.py build,则构建过程将使用distutils.core.setup(),而不知道编译器安装位置。
回复

使用道具 举报

19

主题

68

帖子

225

积分

论坛管理

Rank: 4

积分
225
发表于 2018-9-19 09:51:00 | 显示全部楼层
看起来它正在寻找VC编译器,因此您可以尝试提及编译器类型-c mingw32,因为您有msys
python setup.py install -c mingw32
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表