zoukankan      html  css  js  c++  java
  • python27(32位)安装模块报错“error: Unable to find vcvarsall.bat”

    1)首先,下载一个Microsoft Visual C++ Compiler for Python 2.7的补丁,下载地址在这里:

    http://www.microsoft.com/en-us/download/details.aspx?id=44266

    2) 然后下载安装VS2008(对应VER9.0),如果电脑上安装的是VS2010(对应VER10.0),

    可以在VS命令行下执行:SET VS90COMNTOOLS=%VS100COMNTOOLS%

     如果你安装的是 2012 版(对应VER11.0), SET VS90COMNTOOLS=%VS110COMNTOOLS%

     如果你安装的是 2013版(对应VER12.0), SET VS90COMNTOOLS=%VS120COMNTOOLS%

    或用以下方法也一样可以解决:

    3) “unable to find vcvarsall.bat”这句话出在msvc9compiler.py中

    再研究这个文件发现问题所在了:

    它是在注册表中寻找到vs的目录,再去在vs目录下找vcvarsall.bat。

    但是问题就出在python32里面默认是vc9.0也就是vs2008所以它在注册表里面找不到键值返回None

    productdir = Reg.get_value(r"%s/Setup/VC" % vsbase,

    "productdir")

    vsbase值为:Software/Microsoft/VisualStudio/9.0

    具体修改代码如下:

    msvc9compiler.py中

    def find_vcvarsall(version) 用于查找vcvarsall.bat version就是版本号,实际上是9.0

    vc_env = query_vcvarsall(VERSION, plat_spec)

    VERSION = get_build_version() 因为python32自己是由vc9.0构建的所以VERSION是9.0

    修改MSVCCompiler函数:

    vc_env = query_vcvarsall(VERSION, plat_spec)

    为:

    vc_env = query_vcvarsall(12.0, plat_spec)

    不过还有这句话:

    if VERSION < 8.0:

    raise DistutilsPlatformError("VC %0.1f is not supported by this module" % VERSION)

    看来,python3.2中的distutils只支持vc8.0以上,即vs2005以上的编译器。

    4)之后安装还是报错:“ error: command 'mt.exe' failed with exit status 31”

    编辑Python27Libdistutilsmsvc9compiler.py,查找ld_args.append('/MANIFESTFILE:' + temp_manifest)一行,在其后添加一行,内容为ld_args.append('/MANIFEST')

    5)之后安装就成功了!

  • 相关阅读:
    ESLint 配置说明
    ThinkPhp 更改 BIT 类型的问题
    sql server management studio 查询的临时文件路径
    Excel分组快速自动填充编号
    ThinikPhp 将数据库模型的增、删、改操作写入日志
    Window 任务栏清除历史记录
    vscode 中使用php-cs-fixer和PHP Formatter 插件规范化PHP代码
    ThinkPhp 使用PhpExcel导出导入多语言文件
    [UE4]抛物线指示器
    [UE4]瞬移
  • 原文地址:https://www.cnblogs.com/turingbrain/p/5655073.html
Copyright © 2011-2022 走看看