@[TOC]目录
第一次发帖。。。
问题场景
在python中使用C的库编译一个模块mydemo,使用python setup.py install编译安装时失败,实际上是在编译阶段失败,提示:Unable to find vcvarsall.bat
初始python版本(解决问题的过程中更换版本了)
Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 17:54:52) [MSC v.1900 32 bit (Intel)]
问题解决过程
1)第一次安装VS2017
根据编译过程,中间一定要使用C的编译器,我没有安装,因此按照网上搜索的解决方案,下载了VS2017(社区版本)。
结果发现搜索不到需要的这个文件。
然后又是一顿搜索,发现可能是安装选项选择错误导致的,第一次安装看到这个python开发,以为是把python开发相关的资源都在里面,后来发现这里是安装python相关的东西。需要选上C++相关的部分。
2)第二次安装VS2017
再次安装VS2017,将“使用C++的桌面开发”选择上,去掉一些明显用不上的减少空间:
然后确实能够找到了,这个文件在这个目录下:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build
但是执行命令python setup.py install发现提示还是一样的“unable to find vcvarsall.bat”。
3)调整路径
这次可能是搜索到的路径不正确的问题了。
按照搜索到的解决方案中提到的,build过程中,需要使用到msvc9compiler.py来找这个vcvarsall.bat。(这一步至今还没搞清楚是否是这样的,从后面结果来看应该还有其他途径)
msvc9compiler.py中的find_vcvarsall()处理逻辑:
def find_vcvarsall(version):
"""Find the vcvarsall.bat file
At first it tries to find the productdir of VS 2008 in the registry. If
that fails it falls back to the VS90COMNTOOLS env var.
"""
vsbase = VS_BASE % version
try:
productdir = Reg.get_value(r"%s\Setup\VC" % vsbase