使用pip命令安装包时,有时需要从头编译代码,这就需要用到VC++编译器。
windows下pip安装各种包时,经常会遇到此错误。本文介绍解决方案。
第一步:安装visual studio
第二步:安装everything
打开everything,搜索vcvarsall.bat
,此文件即为python找不到的那个文件。
第三步:找到需要更改的python文件,并修改之
在我电脑上为:C:anacondaLibdistutils\_msvccompiler.py
。需要注意,不同python版本、不同windows系统可能对应不同的文件,但是一定是在distutils下面。直接打开everything搜索一下distutils,在某几个文件里面添加一个print就知道是哪个文件在发挥作用了。
找到此文件,改变_find_vcvarsall()函数,让它直接返回vcvarsall.bat的绝对路径。
def _find_vcvarsall(plat_spec):
print(__file__)
print("baga yalu")
return r'C:Program Files (x86)Microsoft Visual Studio2017CommunityVCAuxiliaryBuildvcvarsall.bat',None
这个函数写的十分垃圾,它会自动读取注册表中信息寻找vcvarsall,然而大多数情况下它都找不到,于是就报错了,这里我们直接写死成vcvarsall的固定路径就可以了。
这个问题其实跟vc版本关系不大,因为vc改变版本并不会改变太多东西,跟visual studio版本也没太大关系,随意一个vc、vs都能够解决问题。
这个问题关键在于_find_vcvarsall()这个函数写的不好。