首页 > 代码库 > 64位Win7搭建Python开发平台(Python3++Ipython_Notebook+Numpy+Scipy+Matplotlib+PyQt4)
64位Win7搭建Python开发平台(Python3++Ipython_Notebook+Numpy+Scipy+Matplotlib+PyQt4)
Life is short, you need Python!
------ Bruce Eckel(ANSI C++ Comitee member)
Python[1]是一门很难让人拒绝学习的程序设计语言,我喜欢它是因为它能很快给人带来成就感,海量的扩展库几乎可以帮助你立刻完成许多看起来很困难的事情。Python的触角已经深入到学习、工作的各个领域,甚至是在科学计算领域也有不俗的表现,许多古老的fortran程序库(如lapack[2])都被封装成了Python的扩展库,继续散发着活力。
Python是开源的、免费的。开源,往往让我想到跨平台的问题。Linux上的软件要移植到Windows上面,要借助于Cygwin[3],但其性能不令人满意,后来有了Mingw[4],可以编译32位的lapack库,配合msys[5]就成了一个mini的linux。但是仅仅32位还是不能让人满意,于是又有了Mingw-w64[6],就连msys也不甘寂寞,弄出了个msys2[7],总算完美了,估计治好了不少人的强迫症,但是它的包管理工具pacman着实让我头疼了一番。
64位已然成为主流,Python的开发平台自然也最好是64位的。单纯win64上的Python不是问题,关键在于与之配套的扩展库,如numpy[8]、scipy[9],官方只提供了win32的安装包,想在64位的Python上使用,只能自己编译咯。这还不是最坏的情况,在Python出来的相当长的一段时间内,这些库实际上只有python2版本的,如果现在你还在用python2,那可以安装一个python(x,y)[10],最新版基于Python2.7.6,700+MB的安装包包含了用都用不完的扩展库,几乎可以媲美matlab、mathematica等商业软件。
回到编译64位扩展库的问题上,numpy需要64位lapack的库,这个不难办,我用Mingw-w64可以编译出来,其实这个工作早有人做了[11],也可以直接装个intel mkl[12],用intel的编译器就可以了,有人在linux上实现了[13]。这三个思路我都尝试了一下,最终发现numpy的说明文件写的太粗糙了,想要顺利编译是不可能的。正当我要放弃时,发现了牛人Christoph Gohlke的工作[14],这家伙编译了许多windows下python的开源科学计算程序库,而且更新得很及时,几乎都是最新版的。不得不相信一个事实,这个世界上有70亿人,除非你做的工作是领域内最前沿的,否则你遇到的问题,大多都被别人解决过了。所以,拿过来,学习它,继续前进,向最前沿前进。
总而言之,我所需要的东西都有了,下面就是单调的安装、配置过程了。
- Python 3.4.1 x86_64:这个无需多言。
- numpy、scipy、matplotlib[15]、ipython[16]、pyqt4[17]:直接从[14]下载64位安装包,以及有依赖关系的包,运行安装,程序会自动安装到python的目录下。
这里的IPython实际上属于IDE了,关于IDE,我尝试了ERIC5、Wing IDE、Eclipse+PyDev等,但最喜欢的还是IPython和IDLE。学习基础的Python时,用IDLE;学习科学计算库numpy、scipy、matplotlib时,IPython,尤其是IPython Notebook是不二选择。IDLE和IPython在安装完之后就可以直接使用,下面介绍IPython Notebook的配置:
1. 确保IPython可以正常运行:在命令行中输入ipython ,显示如下提示:
如果提示缺少依赖库的话,到[14]处下载安装即可。
2. 安装MathJax:Mathjax能够方便地显示数学符号、公式。默认情况IPython Notebook可以使用在线的Mathjax,本地安装是为了方便离线状态下使用。 在IPython中运行以下命令
1 from IPython.external.mathjax import install_mathjax2 install_mathjax()
3. 生成并修改配置文件:在命令行下运行 ipython profile create ,会在C:\Users\yourname\.ipython\下生成profile_default目录,其中的ipython_notebook_config.py就是要修改的配置文件。增加以下内容
1 c.NotebookApp.enable_mathjax = True2 c.NotebookApp.notebook_dir = ‘X:\\XXX‘ //notebook启动目录3 c.IPKernelApp.pylab = ‘inline‘ //生成的图形嵌入到notebook中,也可通过%pylab inline命令在notebook中实现
4. 配置Matplotlib:这里按照其官方文档中的CONFIGURATION GUIDE章节来配置就可以了。我主要关注的是其渲染LaTex的功能,这需要安装texlive[18]或是miktex[19],以及ghostscript[20],并将其bin目录添加到系统path环境变量中。这样就可以生成eps图片了,当然,这需要在程序中添加以下说明
1 import matplotlib as mpl2 mpl.rcParams[‘text.usetex‘]=True //启用tex3 mpl.rcParams[‘text.latex.unicode‘]=True //启用Unicode
当然,这也可以通过修改...\Python34\Lib\site-packages\matplotlib\mpl-data\matplotlibrc配置文件来实现。
在实际运行过程中,有可能会遇到无法导出较大的eps图像文件的情况,伴随着某个临时文件处于保护状态的错误提示,我是直接把用户临时文件目录修改到非系统盘目录中来解决的。设置用户环境变量
1 TEMP=X:\XX2 TMP=X:\XX //X为非系统盘
5. 到此为止,我们可以运行notebook了 ipython notebook
运行Matplotlib官方主页上的一个例子[21],给它加入一句输出eps文件的命令,完美运行,如下所示:
我的笔记本屏幕小,只能截这一部分图了。
可以看出,ipython notebook的界面与mathematica非常类似,至于功能上,二者会差别多大?这个我不知道,因为我投入python的怀抱了!
[1] http://en.wikipedia.org/wiki/Python_(programming_language)[2] http://www.netlib.org/lapack/[3] http://www.cygwin.com/[4] http://www.mingw.org/[5] http://www.mingw.org/wiki/MSYS/[6] http://mingw-w64.sourceforge.net/[7] http://sourceforge.net/projects/msys2/[8] http://www.numpy.org/[9] http://www.scipy.org/[10] https://code.google.com/p/pythonxy/[11] http://icl.cs.utk.edu/lapack-for-windows/lapack/[12] https://software.intel.com/en-us/forums/intel-math-kernel-library/[13] http://blog.csdn.net/tengh/article/details/7940933[14] http://www.lfd.uci.edu/~gohlke/pythonlibs/[15] http://matplotlib.org/[16] http://ipython.org/[17] http://pyqt.sourceforge.net/Docs/PyQt4/[18] https://www.tug.org/texlive/[19] http://miktex.org/[20] http://www.ghostscript.com/[21] http://matplotlib.org/users/usetex.html#usetex-with-unicode
64位Win7搭建Python开发平台(Python3++Ipython_Notebook+Numpy+Scipy+Matplotlib+PyQt4)