错误:需要Microsoft Visual C++ 10.0(无法找到vcvarsall.bat)

Ric*_*ife 74 python numpy pycharm

我试图用PyCharm安装numpy但我一直收到这个错误:

错误:需要Microsoft Visual C++ 10.0(无法找到vcvarsall.bat).

有人可以向我解释我必须做些什么来解决这个错误(并尽可能简单和详细)?即时通讯使用python 3.4.2(我知道这已经回答过,但我不明白).

小智 53

通过set在命令提示符下运行命令来确定现有的Visual Studio工具环境变量,我能够在运行Python 3.4.3的Windows 7 64位上修复此问题.就我而言,它VS140COMNTOOLS适用于Visual Studio Community 2015.

然后运行以下命令(如果您的名称不同,则替换右侧的变量):

set VS100COMNTOOLS=%VS140COMNTOOLS%
Run Code Online (Sandbox Code Playgroud)

这允许我安装PyCrypto模块,该模块之前给我的错误与OP相同.

要获得更持久的解决方案,请通过"控制面板"("编辑系统环境变量")将此环境变量添加到Windows环境中,但您可能需要使用实际路径而不是变量替换.

  • 这非常有用.我想在Windows 10 64bit上分享我的配置.我已经安装了python 3.4.3 32bits.我的'VS140COMNTOOLS'中没有'vcvarsall.bat',但它在'C:\ Program Files(x86)\ Microsoft Visual Studio 14.0\VC'中,然后我按照你的技术.1.使用VC++编程安装Visual Studio 2015社区版2.在系统属性中创建新的用户变量....高级....环境变量.它与此类似.<code>变量名称:VS100COMNTOOLS变量值:C:\ Program Files(x86)\ Microsoft Visual Studio 14.0\VC (4认同)

小智 32

Python 3.3及更高版本现在使用2010编译器.解决问题的最佳方法是免费安装Visual C++ Express 2010.

对于64位用户来说现在更难了,说实话我只是移动到了32位,但是2010 express没有64位编译器(你得到一个新的错误,ValueError:['path'])所以你必须安装Microsoft SDK 7.1并按照此处的说明使64位编译器与python一起使用:Python PIP在Windows 7上为64位安装的MS Visual Studio 2010 Express路径存在问题

您现在可能更容易使用32位版本.除了让编译器工作之外,你还可以通过从这个位置获取二进制wheel文件来绕过编译许多模块的需要http://www.lfd.uci.edu/~gohlke/pythonlibs/

只需下载所需的.whl文件,切换+右键单击下载文件夹,然后选择"打开命令窗口"并运行

pip install module-name.whl 
Run Code Online (Sandbox Code Playgroud)

在我崩溃之前我在64位3.4.3上使用了这个方法并且决定在默认情况下从源代码获得pip编译模块的工作编译器,这就是为什么二进制轮文件工作并且从源代码创建pip的原因.

在Python 2.7上得到此(vcvarsall.bat)错误的人可以改为安装"用于Python 2.7的Microsoft Visual C++编译器"

  • VS2010的指定链接不再有效 (5认同)

Fav*_*kes 24

我两次遇到过这个问题.我第一次使用VS 2013,第二次使用VS 2015使用不同的解决方案.VS 2013和python 2.7的第一个解决方案是:

  1. 单击win + R.
  2. 输入 SET VS90COMNTOOLS=%VS120COMNTOOLS%
  3. 关闭所有窗户
  4. 再次输入pip install

现在,一年后,我找到了一种更简单的方法来解决它.这次我使用VS 2015和python 3.4.

  1. 右键单击"我的电脑".
  2. 单击属性
  3. 高级系统设置
  4. 环境变量
  5. 添加新系统变量
  6. 输入VS100COMNTOOLS变量名称
  7. 输入VS140COMNTOOLS新变量的值.
  8. 关闭所有窗户

现在我确定你会问一些问题,VSXXXCOMNTOOLS如果我使用VS2008或其他编译器,我应该怎么做.

有一个文件python\Lib\distutils\msvc9compiler.py,从我们看到的第216行开始

def find_vcvarsall(version):
    """Find the vcvarsall.bat file
    At first it tries to find the productdir of VS 2010 in the registry. If
    that fails it falls back to the VS100COMNTOOLS env var.
    """
Run Code Online (Sandbox Code Playgroud)

这意味着你必须为它提供VS 2010的productdir,所以如果你使用的是python 2.x和

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

或者如果你使用的是python 3.x和

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

它与添加新系统变量相同.看第二种方式.

更新:有时,它仍然无法正常工作.检查您的路径,确保包含 VSxxxCOMNTOOLS


Pat*_*ick 11

VS 2010 Express不再链接到任何VS Express页面(我发现).我确实找到了我使用的ISO链接,它修复了这里提到的错误.

http://download.microsoft.com/download/1/E/5/1E5F1C0A-0D5B-426A-A603-1798B951DDAE/VS2010Express1.iso

注意:还要确保你拥有x86所有东西(Python + Postgresql)或者你会得到其他错误.我没有尝试x64的一切.


Mas*_*rAM 10

我得到了相同的错误,并最终使用SourceForge中可用的预先构建的numpy分布 (类似地,可以获得matplotlib的分布).

可提供32位2.7和3.3/3.4的版本.
当然,PyCharm会立即发现它们.


小智 9

你可以在LFD下载.whl .然后在CMD中使用"pip install***.whl"


小智 7

试图安装lxml,抓取和其他扩展,这需要VS 10.0+并得到相同的问题.我找到了解决这个问题的方法(Windows 10 x64,Python 3.4+):

  1. 安装Visual C++ 2010 Express(下载).(不要安装Microsoft Visual Studio 2010 Service Pack 1)

  2. 从控制面板\程序和功能中删除所有Microsoft Visual C++ 2010可再发行组件包.如果您不这样做,那么安装将失败,并显示"安装期间出现致命错误"错误.

  3. 安装Windows SDK for Visual Studio 2010的脱机版本(v7.1)(下载).这是64位扩展所必需的.Windows内置了ISO安装.只需安装ISO并运行Setup\SDKSetup.exe而不是setup.exe.

  4. 在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

  5. 在此站点上查找扩展,然后将它们放入python文件夹,并使用pip安装.whl扩展名:

    python -m pip install extensionname.whl

  6. 请享用