原文来自:http://blog.csdn.net/ren911/article/details/6448696

2011-05-26 22:53 3654人阅读 评论(3) 收藏 举报

在用C给python3.写扩展时遇到如下问题:

写好*module.c和setup.py文件后执行

python setup.py build

报unable to find vcvarsall.bat

我机器上有vs2005和vc6,但是还是报错。

搜索很多资料:

网上提供解决办法如下:

下载mingw环境,添加环境变量

使用

python setup.py build –compiler=mingw32

这个办法感觉只是绕过了这个问题,并不是真正解决问题,而且我系统中python是用vs编译的,扩展模块却用mingw-gcc编译,感觉可能有问题。

但网上对此就缺少详细的说明

经过对C:/Python32/Lib/distutils目录下.py文件的仔细翻阅,发现“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(8.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以上的编译器。

转载于:https://www.cnblogs.com/shalang/articles/2825676.html

转载 python扩展问题”unable to find vcvarsall.bat“的解决相关推荐

  1. Windows下安装Python扩展模块提示“Unable to find vcvarsall.bat”的问题(转载)

    Unable to find vcvarsall.bat的问题描述 问题分析 总结 提示: 如果你只是想知道自己需要安装哪个版本的Visual Studio请直接查看本文最后一个小节的内容. 一.问题 ...

  2. python 中运行 pip 或者 easy_install 时出现 error: unable to find vcvarsall.bat 的解决办法

    在新系统的电脑上安装python后用pip安装scipy时出现error: unable to find vcvarsall.bat的错误. 查找了一番之后发现是电脑上没有vc9.0的编译环境导致,安 ...

  3. 64位win7中使用vs2013为python3.4安装pycrypto-2.6.1插件报Unable to find vcvarsall.bat异常解决方式...

    问题描写叙述: 64位win7中使用vs2013为python3.4.2安装pycrypto-2.6.1插件报Unable to find vcvarsall.bat. 问题分析: 1.源代码分析,查 ...

  4. Python error: Unable to find vcvarsall.bat

    请参考阅读博文<Python error: Unable to find vcvarsall.bat> 我用的该文章中的方案二解决的: 前提:win7系统     Python2.7 ①下 ...

  5. python学习--windows下安装Numpy包的错误:Unable to find vcvarsall.bat

    今天在安装numpy包的时候,无论是通过pip install numpy 还是上网下载numpy包后安装都是出现问题:error: Unable to find vcvarsall.bat,于是百度 ...

  6. Windows下Python 3.6 + VS2017 + Anaconda 解决Unable to find vcvarsall.bat问题

    Windows下Python 3.6 + VS2017 + Anaconda 解决Unable to find vcvarsall.bat问题 参考文章: (1)Windows下Python 3.6 ...

  7. python安装依赖失败_python执行安装第三方依赖numpy失败:error: Unable to find vcvarsall.bat...

    一台计算机上同时安装了python2.7和python3.7. 现在为python2.7安装numpy包. 失败:error: Unable to find vcvarsall.bat ======= ...

  8. python mysql扩展_关于python:构建’_mysql’扩展错误:无法找到vcvarsall.bat

    我正在尝试通过pip mysql安装python 3.5. 我发现我有丢失的文件,vcvarsall.bat in "C: Program Files(x86) Microsoft Visu ...

  9. 对于解决python安装第三方包时候,报错 error: Unable to find vcvarsall.bat的终极秘诀

    对于很多python玩家来说,难免安装一些第三方的库,但是,在安装过程中,如果遇到了 error: Unable to find vcvarsall.bat.怎么办呢?网上答案千千万,楼主亲测,管用的 ...

最新文章

  1. 无向图--邻接矩阵、连接矩阵、深度遍历、广度遍历、生成树
  2. [欢迎加入]博客园.NET Compact Framework讨论组
  3. RabbitMQ学习(1):安装
  4. 【小白学PyTorch】8.实战之MNIST小试牛刀
  5. 【DP】Rotating Substrings(CF1363F)
  6. 无服务器:不费吹灰之力!
  7. Linux系统中的load average
  8. java打印日期序列,Java GSON-日期格式
  9. docker for windows无法共享硬盘
  10. Bzoj4870 [SXOI2017]组合数问题
  11. 如何将树莓派设置为WiFi热点
  12. 姿态角解算(MPU6050 加速度计加陀螺仪)
  13. linux显卡用amd还是NVIDIA,Linux NVIDIA显卡驱动年度横评,不同于AMD,NVI
  14. 2020 第十一届蓝桥杯大赛软件类省赛第二场 C/C++ 大学 B 组 完整题面和题解
  15. ctf练习之闯关游戏
  16. Oracle等数据库报盘步骤(使用脚本批量压缩)
  17. IOMMU/SMMUV3代码分析(1)SMMU设备的分配
  18. 使用HTML5+调用手机摄像头和相册
  19. DES加密解密kotlin版
  20. Android 刘海屏适配全攻略

热门文章

  1. WEB前后端分离开发中的验证与安全问题
  2. MacOS开发必备工具brew,安装nginx反向代理,替代linux工具 apt-get和 yum...
  3. 全网最详细的大数据集群环境下如何正确安装并配置多个不同版本的Cloudera Hue(图文详解)...
  4. 线程工具类(根据电脑逻辑处理器个数控制同时运行的线程个数)
  5. Tiles Framework
  6. 系统设计 - 使用面向 iOS 的本机插件扩展
  7. 【设计模式系列】OO设计原则之LSP-Liskov替换原则
  8. Windows 任务管理器进程详解
  9. 用掘金-Markdown 官方语法总结大全
  10. onMeasure模式