在windows7(64位)下安装python(3.4)的theano库

在windows7(64位)下安装python(3.4)的theano库

本文转自http://yiisama.lofter.com/post/1cc07f63_5804e67

楼主折腾这件事情长达10个小时,其中走了不少弯路,现记下方法以备不时之需,或帮助其他和我一样蛋疼到在windows下工作的人。

如果你百度一下windows安装theano,里面多半都是告诉你太麻烦了,让你转用Anaconda、WinPython、pythonxy之类的python发行版IDE。这是因为theano有很多依赖的包,如numpy、scipy等。如果你开始装numpy的话,你会发现你又需要BLAS、ATLAS之类装起来还需要自己手动编译的东西。。。这会让你整个人都不好

于是有这么一个地方

Unofficial Windows Binaries for Python Extension Packages
http://www.lfd.uci.edu/~gohlke/pythonlibs/

你可以直接在这里找到numpy、scipy对应的python版本在windows32位或64位下的安装exe。。。

好了,现在依赖包搞定了,开始装theano。

最简单的是pip install theano,或者下一个theano包用python setup.py install都是可以的。

但是。。。

反正我是遇到了这个问题,theano/gof/cmodules.py里面居然有一句不符合python3.4特性的语句,它会导致你在import theano的时候报错。。。这个语句是:

(stdout, stderr) = p.communicate(input=”)

你需要把她改成

(stdout, stderr) = p.communicate(input=b”)

没错就是把那个空字符串从ascii string变成byte string。。。区分两种string,这是python3的特性。

否则它调用subprocess.py里面的方法的时候就会出问题,因为那边需要的是byte string。。。

好了这个问题解决,接下来你再import theano,如果你的mingw是32位的,会报这样一个错误:

Exception: Compilation failed (return status=1): C:\Users\swanheart\AppData\Local\Theano\compiledir_Windows-7-6.1.7601-SP1-Intel64_Family_6_Model_42_Stepping_7_GenuineIntel-3.4.1-64\lazylinker_ext\mod.cpp:1:0: sorry, unimplemented: 64-bit mode not compiled in

如果你去搜一下sorry, unimplemented: 64-bit mode not compiled in就会知道这是gcc版本的问题。。。你需要一个64位的mingw。

所以就装一个64位的mingw(安装时选x86_64架构,posix进程)。

装好之后。。。要改path。。。长期在windows下工作经常需要干的事之一。。。

但是要记得。。。要么把新的mingw64的路径放在旧的前面。。。要么删掉旧的。。。否则就会导致还是使用旧的。。。

而且要清干净。。。

楼主就悲催地清掉了一个旧的gcc路径以为搞定了,结果实际上一直在用haskell platform里面的gcc在那import半天怎么还是错误呢,后来gcc -v –version才发现问题。。。谁能记得haskell platform里面会有个gcc啊!!

最后,差不多快好了。。。这是import还是会报错,不过和之前不一样了。。。

我就只记一下怎么解决吧,从google论坛上看到的,虽然我已经不理解这是怎么回事了……

还是去之前那个地方下一个Libpython的whl文件,用pip下一个wheel,用wheel把它装上。

最后。。。就可以看着它在执行import theano之后沉默了5秒钟,没有报任何错误,换行。

你不禁会想。。。这漫长的5秒里python的解释器、gcc编译器、链接器等等居然都在正常工作,是多么的神奇。。。

附加说明

本人按照以上步骤配置,与文中不同之处在于:
1.我的操作系统是win8
2.在github上下载 theano源码安装,发现theano/gof/cmodules.py文件中(stdout, stderr) = p.communicate(input=b(”)),所以不做任何修改,直接配置,Libpython确实是必须的,不安装import theano确实会出错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python拥有一个强大的标准Python语言的核心只包含数字、字符串、列表、字典、文件等常见类型和函数,而由Python标准提供了系统管理、网络通信、文本处理、数据接口、图形系统、XML处理等额外的功能。Python标准命名接口清晰、文档良好,很容易学习和使用。 Python社区提供了大量的第三方模块,使用方式与标准类似。它们的功能无所不包,覆盖科学计算、Web开发、数据接口、图形系统多个领域,并且大多成熟而稳定。第三方模块可以使用Python或者C语言编写。SWIG,SIP常用于将C语言编写的程序转化为Python模块。Boost C++ Libraries包含了一组,Boost.Python,使得以 Python 或 C++ 编写的程序能互相调用。借助于拥有基于标准的大量工具、能够使用低级语言如C和可以作为其他接口的C++,Python已成为一种强大的应用于其他语言与工具之间的胶水语言。 Python标准的主要功能有: 文本处理,包含文本格式化、正则表达式匹配、文本差异计算与合并、Unicode支持,二进制数据处理等功能 文件处理,包含文件操作、创建临时文件、文件压缩与归档、操作配置文件等功能 操作系统功能,包含线程与进程支持、IO复用、日期与时间处理、调用系统函数、写日记(logging)等功能 网络通信,包含网络套接字,SSL加密通信、异步网络通信等功能 网络协议,支持HTTP,FTP,SMTP,POP,IMAP,NNTP,XMLRPC等多种网络协议,并提供了编写网络服务器的框架 W3C格式支持,包含HTML,SGML,XML的处理。 其它功能,包括国际化支持、数学运算、HASH、Tkinter等

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值