第一章 win 7装prophet之泪

环境:win 7、python 3.6、VS2015
目标:装fbprophet

  根据prophet的指导(自己上网查看),之前装依赖都无比顺利。在最终装prophet(pip install prophet)就懵B了。
  开始看console 的打印信息,是pystan扩展包报link.exe不合适之类的。傻了(对python的理解不够)。再次回到pystan的安装指导中认真看。发现pystan不支持MS的C++编译器。有眉目就好。搜了下度娘,发现可以安装 minGW (自己的机子几位,自己看),环境变量path自己设置。
  可是如何指定python使用minGW编译器呢?继续度娘,得到答案,在python 下 distutils目录下创建distutils.cfg文件,并配置内容为:

[build]
compiler = mingw32

  继续尝试。啪啪啪,继续打脸。
报错:
Unknown MS Compiler version 1900
(这里也是很有意思的一个点。如果当时处理好,估计可以提前睡觉,就不需要折腾到凌晨3点。程序员需要执着精神,gogogo)
  看到MS给我的第一感觉是 distutils没有设置好。blablabla开始折腾啦。

苦逼的尝试

  • 看prophet里的setup.py 倒腾变量设置,指定编译器
  • 看setuptools里面的解析代码
  • 看distutils里的cygwinccompiler.py代码,如何指定编译器

  苦逼的试了很久,都失败了。始终都在怀疑编译器设置是否成功。
  由于一直抱着那个想当然,在看cygwinccompiler.py时发现有打印一些日志信息。能够答应出编译器信息。
  blablabla又开始新一轮的尝试,其中曲折与心酸不表。最终在Distutils的手册(2.9 Debugging the setup script)中看到。在编译时设置环境变量:DISTUTILS_DEBUG 。只要不是为空,就开启debug模式。
  这里是个好的知识点。如何设置环境变量?有时候东西学多了,容易混。之前尝试python setup.py install DISTUTILS_DEBUG=1 。是不是很熟悉。不好意思,错了。什么叫环境变量。环境变量是这样设置的 set DISTUTILS_DEBUG=1。到这小功告成,日志出来了。指定的是g++在编辑,没有错。看来分析错了。
没有办法了,就度娘、谷歌下(直接搜:Unknown MS Compiler version 1900),终于看到一篇好文。里面描述了两点重点信息:
cygwinccompiler.py有bug,不支持VS2015,需要直接在文件里增加:

    elif msc_ver == [19000]: +            # Visual Studio 2015 / Visual C++ 15.0
    return ['vcruntime140.']

  修改完后需要下载 vcruntime140.dll 并放置在 pythonX.X\libs下

  在此重新编译。哇靠,成功了。睡觉去。。。。。。。。。。。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Distutils可以用来在Python环境中构建和安装额外的模块。新的模块可以是纯Python的,也可以...
    MiracleJQ阅读 3,150评论 0 1
  • Python 面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对...
    顺毛阅读 4,238评论 4 16
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,969评论 19 139
  • 往事总是像床缝里的那本绿色封皮的书一样,静静地呆在一个无人知晓的地方,某个时刻突然出现在你的眼前。睁眼一看,封皮上...
    你猜你猜我是谁阅读 1,050评论 0 1
  • 熬过半夜的时间 在三点睡下 脑袋昏沉,困眼不争 一觉正午醒来 太阳老高,日头早过竿头 一天又过一天 书本未翻,诗文...
    山长说阅读 471评论 0 2