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)之后安装就成功了!

  • 相关阅读:
    C#一些定义
    顺序
    针对IE8的css hack
    js 数字,金额 用逗号 隔开。数字格式化
    Ubuntu下使用Vi是方向键变乱码 退格键不能使用的解决方法
    UBUNTU中如何获得root权限
    区分IE8 、IE9 的专属css hack
    ubuntu 安装 Sublime Text 2
    PHP执行zip与rar解压缩方法
    使用ThinkPHP时,双引号导致插入数据库经过转义的处理
  • 原文地址:https://www.cnblogs.com/turingbrain/p/5655073.html
Copyright © 2011-2022 走看看