文档章节

解决一次error: Unable to find vcvarsall.bat的经历

搜呗
 搜呗
发布于 2017/05/21 10:39
字数 727
阅读 50
收藏 0
点赞 0
评论 0

在使用cx_freeze做window软件打包时,碰到了error: Unable to find vcvarsall.bat,然而这才是蛋疼的开始,经过一轮“百度”后,最终找到了一个自认为能解决的方案(基于python2.7+win7_x64),其他版本,不能保证哈,但估计思路差不多,敬请诸君参考!

1. 为什么会出现该错误,好吧,先扒扒Python的代码

定位到该文件:Python27\Lib\distutils\msvc9compiler.py(看自己的Python安装路径)

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,
                                   "productdir")
        print 'productdir', productdir, 'vsbase:',  vsbase								 
    except KeyError:
        productdir = None

    # trying Express edition
    if productdir is None:
        vsbase = VSEXPRESS_BASE % version
        try:
            productdir = Reg.get_value(r"%s\Setup\VC" % vsbase,
                                       "productdir")
        except KeyError:
            productdir = None
            log.debug("Unable to find productdir in registry")

    if not productdir or not os.path.isdir(productdir):
        toolskey = "VS%0.f0COMNTOOLS" % version
        print 'toolskey', toolskey, 'productdir:', productdir, vsbase
        toolsdir = os.environ.get(toolskey, None)

        if toolsdir and os.path.isdir(toolsdir):
            productdir = os.path.join(toolsdir, os.pardir, os.pardir, "VC")
            productdir = os.path.abspath(productdir)
            if not os.path.isdir(productdir):
                log.debug("%s is not a valid directory" % productdir)
                return None
        else:
            log.debug("Env var %s is not set or invalid" % toolskey)

以上的代码可以看出,python是通过注册表的形式去定位到“vcvarsall.bat”这大哥所在路径的。所以我又特意把路径打印出来,如下:

VS90COMNTOOLS productdir: None Software\Microsoft\VCExpress\9.0

很明显我的目前的路径为空哈。。。。。几百个草泥马奔跑过!

当你看到VCExpress时,是不是觉得要去安装这个了?其实还是可以通过安装一个专门针对Python2.7的报,路径为:https://www.microsoft.com/en-us/download/details.aspx?id=44266

当你开心的安装好了,然后你觉得大功告成,然并卵,因为这个安装好,并不会自动帮你在注册表里登记哈。。。而且他还要安装在用户目录,所以只能通过搜索vcvarsall.bat位置,以下是我的路径:

C:\Users\username\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0

怎么解决,人肉加上呗:

错误原因: 
报这个错误的原因是Python的distutils模块中的msvc9compiler.py并不从环境变量指定的路径中寻找’vcvarsall.bat’,而是通过注册表来寻找…,然而,不知为什么编译器安装过程没有配置注册表。

解决办法: 
只要手工把注册表配置好,就可以了。 
// 1、打开注册表编辑器 
run regedit 
// 2、配置 
// 2.1、如果你安装的Python是32位的,则,创建如下: 
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\9.0\Setup\VC 
// 2.2、如果你安装的Python是64位的,则,创建如下: 
HKEY_CURRENT_USER\Software\Wow6432Node\Microsoft\VisualStudio\9.0\Setup\VC 
// 3、并在此项下新建字符串值: 
名称:productdir 
数据:vcvarsall.bat所在路径 
注意:路径中不包含最后的反斜杠。

此处解决方案有:

http://stackoverflow.com/questions/6551724/how-do-i-point-easy-install-to-vcvarsall-bat

http://blog.csdn.net/donger_soft/article/details/44838109

 

 

 

 

 

 

 

 

© 著作权归作者所有

共有 人打赏支持
搜呗
粉丝 16
博文 27
码字总数 4939
作品 1
广州
后端工程师
[python] windows 下安装 scrapy报错:error: Unable to fin

[python] windows 下安装 scrapy报错:error: Unable to fin 米豆网2017-12-113 阅读 pythonscrapy 在windows 下通过pip install scrapy 时报错:error: Unable to find vcvarsall.bat;查看......

米豆网
2017/12/11
0
0
python---解决“Unable to find vcvarsall.bat”错误

今天在安装reportlab时老是发生Unable to find vcvarsall.bat的错误,上网找了一下,在eddsn找到了“Unable to find vcvarsall.bat” error when trying to install rdflib这么一篇文章,解决...

durban
2012/04/19
0
14
python Visual C++ 9.0 is required解决方案

error: Microsoft Visual C++ 9.0 is required (Unable to find vcvarsall.bat). Get it … 解决方案 python通过pip或者源码来安装某些模块时,这些模块包含有c/c++源码,安装过程会调用本地...

元谷
06/28
0
0
Fix Pip Install Unable to Find vcvarsall.bat|error

Fix Pip Install Unable to Find vcvarsall.bat|error Mindy2017-06-1927 阅读 pipbatfindinstall Sometimes when installing a Python module with pip it returns an error like this: er......

Mindy
2017/06/19
0
0
Win7 64位编译Python扩展解决”error: Unable to find vcvarsa

Python编译扩展命令python setup.py install但命令总是失败,出现error: Unable to find vcvarsall.bat 参照 http://wangye.org/blog/archives/738/ 按照如下设置解决问题。 set DISTUTILSU...

摩西.M
2014/01/03
0
0
win 64位系统安装带有c编写的python模块出现ValueError: [u'path']解决

关于win 64位机器安装Scrapy的问题:http://steamforge.net/wiki/index.php/HowtoInstallScrapyin64-bitWindows_7 在安装Scrapy是要安装一系列的依赖模块, 出现问题: 1、error: Unable to ...

Nob
2014/09/30
0
0
【Python 安装模块】error之ValueError: [u'path']

关于win 64位机器安装Scrapy的问题:http://steamforge.net/wiki/index.php/HowtoInstallScrapyin64-bitWindows7 在安装Scrapy是要安装一系列的依赖模块, 出现问题: 1、error: Unable to ...

霞女
2015/11/25
116
0
安装Python libpcap库出错error:Unable to find vcvarsall.bat

安装Py libpcap库出错error:Unable to find vcvarsall.bat 百度上的几乎为所有办法都试过了,未果.....google最近打不开,不知道什么问题 ! libpcap库是抓包用的,我用的是Win 系统,在CMD...

了了狼
2014/06/02
291
2
怎么安装部署啊,安装过程遇到了问题

unable to find vcvarsall.bat这个怎么解决啊

mousefly
2015/10/16
1K
6
Scrapy 如何安装部署啊,安装过程遇到问题了

unable to find vcvarsall.bat这个怎么解决啊

mousefly
2015/10/17
729
4

没有更多内容

加载失败,请刷新页面

加载更多

下一页

聊聊spring cloud的AsyncLoadBalancerAutoConfiguration

序 本文主要研究一下AsyncLoadBalancerAutoConfiguration AsyncLoadBalancerAutoConfiguration spring-cloud-commons-2.0.0.RELEASE-sources.jar!/org/springframework/cloud/client/loadba......

go4it
14分钟前
0
0
10.19 iptables规则备份和恢复 ,firewalld的9个zone,service的操作

保存和备份iptables规则 内容: 保存iptables规则 service iptables save 把iptables规则备份到my.ipt文件中: iptables-save > my.ipt 恢复刚才备份的规则: iptables-restore < my.ipt 1.......

Linux_老吴
16分钟前
0
0
Vue 自动化表单相关资料

1.使用vue自动化表单 2.Vue可视化,Vue代码生成,Vue动态表单 3.前端表单进阶之路:通过 Vue.js 实现表单可配置化 4.使用Vue动态生成form表单

IT追寻者
17分钟前
0
0
动态SQL

一、动态SQL 1、if <select id="findActiveBlogWithTitleLike" resultType="Blog"> SELECT * FROM BLOG WHERE state = ‘ACTIVE’ <if test="title != null"> AND title l......

一个yuanbeth
20分钟前
0
0
使用ExternalDNS自动化DNS配置

Kubernetes社区的生态繁荣和该领域技术的快速茁壮发展,已经是众所周知。Kubernetes领域有太多强大的、创新的技术产品,而最近引起我注意的项目是ExternalDNS。这是在近期的POC期间客户主动咨...

RancherLabs
24分钟前
0
0
多线程-Lock

今天写了一段测试Lock的代码,如下: namespace TLock{ class Program { static void Main(string[] args) { TMyThread myThread = new TMyThre......

kaixinguo314
35分钟前
0
0
如何清洁你脏兮兮的笔记本电脑?

简评:我还以为清理笔记本就是吹灰。 本文转自纽约时报(中文版),原文见文末。 你知道你的笔记本电脑很脏。你可以看到键盘上的灰尘和污垢,以及触控板中间的皮肤油印。那你上次清洁它是什么...

极光推送
39分钟前
0
0
中国经济模式转型的挑战

  中国经济模式转型的挑战   陈志武(耶鲁大学金融经济学教授)   今天我讲的题目是当前大家关心的,特别是这次金融危机之后,中国学界、决策层还有民间,都很关注中国以后的走向,社会...

吕伯文
44分钟前
2
0
win10玩docker无法Share Drivers的坑

Win10下使用Docker的开启Shared Drivers的时候,一直卡在:Sharing Drivers。 原因如下: 1.检查操作性系统的net share功能开启了没有 cmd-->services.msc 查看Server和Workstation两个S...

傲娇字符
45分钟前
0
0
Intellij Idea快捷键的使用

Ctrl +H 全文搜索 快捷键模式Eclipse Alt +左箭头 上一个方法 Alt + 右箭头 下一个方法 Ctrl + 左键点击文件title 提示文件路径 参考资料 http://wiki.jikexueyuan.com/project/intellij-ide...

轩辕剑
50分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部