一、搭建
平时在台式机上linux下编写python,但由于matlab建模需要,而自己的本本是win7系统,不想装双系统和虚拟机,因此了解了一下ipython notebook,顿时感受到了其强大。
ipython比python本身自带的IDLE强大许多,而notebook是web based IPython封装,但是可以展现丰富文本,使得整个工作可以以笔记的形式展示、存储,对于交互编程、学习非常方便。
安装步骤有点小麻烦,依赖稍多。下面按照windows的安装说一下。也可以直接参考官方安装说明。
1、安装Python
这个是必须的,现在python版本最新是python3.3.5,但本人更喜欢python2.7,因为很多源码是基于python2写的。在http://www.python.org/download/下载。按照自己的平台下载对应的版本,然后安装即可。
2、设置环境变量
把F:\bigdata\python\python2.7和F:\bigdata\python\python2.7\Scripts都添加到环境变量中,如
F:>set PATH=%PATH%;F:\bigdata\python\python2.7;F:\bigdata\python\python2.7\Scripts(一次性,即关闭就没有)
完全不销毁:链接http://jingyan.baidu.com/album/d5a880eb6aca7213f047cc6c.html?picindex=1
3、下载安装Setuptools
下载ez_setup.py到某个目录(如:F:\bigdata\python\python2.7\Scripts),下载地址:https://pypi.python.org/pypi/setuptools
安装:进入F:\bigdata\python\python2.7\Scripts,运行:
python ez_setup.py
在这个过程中,系统会连接网络下载所需要的安装包并完成安装,这样就可以使用easy_install了。
PS:也可下载安装pip
下载get-pip.py到某个目录(如:F:\bigdata\python\python2.7\Scripts),下载地址:http://www.pip-installer.org/en/latest/installing.html#install-or-upgrade-setuptools
安装:进入F:\bigdata\python\python2.7\Scripts,运行:
python get-pip.py
在这个过程中,系统会连接网络下载所需要的安装包并完成安装,这样就可以使用easy_install了。
做完前面四步,就可以在Windows下面开始使用python了。
1、下载安装IPthon:
F:>easy_install.exe Ipython
系统就会去网上寻找ipython包,进行下载及安装,并且还把pyreadline也安装了。python2.7.exe被安装在F:\bigdata\python\python2.7\Scripts下面,因为前面添加过环境变量的路径支持,所以可以直接输入:
F:>ipython
2、尝试Notebook,还需要下载一些其他东东
1)下载安装pyzmq,pip对pyzmq支持不太好,装不上。尝试使用easy_install
F:>easy_install.exe pyzmq
2)下载安装jinja2
F:>easy_install.exe jinja2
3)下载安装tornado
F:>easy_install.exe tornado
好了,使用下面命令就可以把Notebook连起来:
F:>ipython notebook
3、尝试科学计算的画图工具matplotlib
因为下载的python没有自带numpy 和 matplotlib
1)下载安装nose
F:>easy_install.exe nose
2)由于easy_install.exe 与 pip都不能安装numpy,所以从这个链接http://www.lfd.uci.edu/~gohlke/pythonlibs/可以得到
numpy-MKL-1.8.2.win32-py2.7.exe
要注意,因为我们使用的是python2.7,所以一点也要选py2.7的numpy。直接安装,它会依照Windows注册表里面登记的pythonInstall来确定安装路径。
3)最后安装matplotlib,但由于easy_install.exe 与 pip都不能安装matplotlib,所以同上链接http://www.lfd.uci.edu/~gohlke/pythonlibs/可得
matplotlib-1.3.1.win32-py2.7.exe
4)同上链接可得
scipy‑0.14.0.win32‑py2.7.exe
好了,这就大功告成了。
远程访问notebook
如果需要远程访问,就稍微麻烦一点:
首先,需要建立一个server的config,通过在命令行键入:
ipython profile create nbserver
然后,修改新建的profile,即ipython_notebook_config.py(命令行会有输出,告诉你生成的文件在哪里),默认的config文件都是被注释掉的,你需要至少修改如下的项:
c = get_config()
# Kernel config
c.IPKernelApp.pylab = 'inline' # if you want plotting support always
# Notebook config
c.NotebookApp.certfile = u'/absolute/path/to/your/certificate/mycert.pem'
c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False
c.NotebookApp.password = u'sha1:bcd259ccf...your hashed password here'
# It's a good idea to put it on a known, fixed port
c.NotebookApp.port = 9999
但是,你需要注意的是,我们还没有mycert.pem,这个也很简单,使用openssl生成一个就行,如果你手头有linux机器的话就极其简单了:
$ openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem
再接着,需要生成一串哈希后的密钥,随便开一个IPython的shell键入:
In [1]: from IPython.lib import passwd
In [2]: passwd()
设定你的密码即可(现在0.13版还不支持多人的notebook,因此只能单用户使用,只支持一个密码罢了,多用户功能处在开发中)。
好了,现在启动你的public的IPython notebook吧:
ipython notebook --profile=nbserver
然后你就可以在浏览器里远程访问你的IPython notebook了
二、安装常见问题
ipython notebook安装见http://blog.csdn.net/u012332571/article/details/38563897,完成后。
在ipython notebook中运行一个简单的程序例子:
import matplotlib.pyplot as plt
plt.plot([1,2,3])
plt.ylabel('point')
plt.show()
发现出现了下面的错误:
raise ImportError("matplotlib requires dateutil")
ImportError: matplotlib requires dateutil
这个需要dateutil,你可以到这里下载安装。
把dateutil 安装完后又出现如下错误:
raise ImportError("matplotlib requires pyparsing")
ImportError: matplotlib requires pyparsing
需要 pyparsing 到这里下载安装。
ImportError: No module named six
将\python\python2.7\Lib\site-packages\scipy\lib中的six.py six.pyc six.pyo三个文件拷贝到 \python\python2.7\Lib\site-packages目录下即可。
完成以上步骤,运行上面的例子就可以显示我们的图像,如下所示。
在程序安装过程中如果遇到需要安装的一些依赖包,你可以到这里查找(点我),确实是个好资源。
可以根据所画图形的需要 在下面的链接里选择相应的图形 进行修改,绘出自己所需的图像。
example: http://matplotlib.org/examples/index.html, gallery:http://matplotlib.org/gallery.html
中文乱码解决方法
注意绘图时中文的解决方法, 在.py文件头部加上如下内容:
# -*- coding: utf-8 -*-
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei'] #指定默认字体
mpl.rcParams['axes.unicode_minus'] = False #解决保存图像是负号'-'显示为方块的问题
我把安装 python matplotlib所需的软件放到百度网盘了,可以到这里这下。
绘图脚本.py转为 .exe
如果为希望能把Python脚本发布为脱离Python平台运行的可执行程序,比如单个的exe文件。
可以参考这篇博文:http://blog.csdn.net/daniel_ustc/article/details/15501385
Python模块安装
1. 单文件模块
直接把文件拷贝到$python_dir/lib
2. 多文件模块,带setup.py
python setup.py install
3. egg文件
1) 下载ez_setup.py,运行python ez_setup
2) easy_install *.egg
虽然Python的模块可以拷贝安装,但是一般情况下推荐制作一个安装包,即写一个setup.py文件来安装。
setup.py文件的使用:
% python setup.py build #编译
% python setup.py install #安装
% python setup.py sdist #制作分发包
% python setup.py bdist_wininst #制作windows下的分发包
% python setup.py bdist_rpm
setup.py文件的编写
setup.py中主要执行一个 setup函数,该函数中大部分是描述性东西,最主要的是packages参数,列出所有的package,可以用自带的find_packages来动态获取package。所以setup.py文件的编写实际是很简单的。
简单的例子:
setup.py文件
from setuptools import setup, find_packages
setup(
name = " mytest " ,
version = " 0.10 " ,
description = " My test module " ,
author = " Robin Hood " ,
url = " http://www.csdn.net " ,
license = " LGPL " ,
packages = find_packages(),
scripts = [ " scripts/test.py " ],
)
mytest.py
import sys
def get():
return sys.path
scripts/test.py
import os
print os.environ.keys()
setup中的scripts表示将该文件放到 Python的Scripts目录下,可以直接用。
OK,简单的安装成功,可以运行所列举的命令生成安装包,或者安装该python包。
本机测试成功(win32-python25)!
==============================================================
setuptools它可以自动的安装模块,只需要你提供给它一个模块名字就可以,并且自动帮你解决模块的依赖问题。一般情况下用setuptools给安装的模块会自动放到一个后缀是.egg的目录里。
首先,安装setuptools这个东西,先去下载一个脚本: http://peak.telecommunity.com/dist/ez_setup.py 下载完后直接执行它就会帮你把setuptools给装好。
之后,安装模块的使用方法就是使用一个叫easy_install的命令,在Windows里,这个命令在python安装目录下的scripts里面,所以需要把scripts加到环境变量的PATH里,这样用起来就更方便,linux下不需要注意这个问题。
安装软件只需要执行:easy_install 模块名
===================================================
pyinstaller 来建立linux下的python独立执行文件
以下内容假定已安装好Python 2.4/2.5
一、下载并编译pyinstaller(只需做一次,以后可直接做第二步)
1.下载pyinstaller,现在的版本是1.3
(1)wget http://pyinstaller.hpcf.upr.edu/source/1.3/pyinstaller_1.3.tar.gz
2.解包进入源码目录
(1)tar zxv pyinstaller_1.3.tar.gz
(2)cd pyinstaller-1.3/source/linux
3.编译源代码
(1)python Make.py 生成python的 .pyc文件
如无错误,则出现如下提示(只有一行):
Now run "make" to build the targets: ../../support/loader/run ../../support/loader/run_d
(2)make 连接生成linux的 .o 文件
4.生成编译配置文件
(1)python Configure.py 生成config.dat配置文件
二、编译独立运行的python可执行文件
1.生成spec文件
python pyinstaller-1.3/Makespec.py --onefile --upx linuxlaptop.py
参数说明:
--onefile 生成单文件
--upx 生成压缩的文件(可减小执行文件体积,需先安装upx软件包)
2.生成最终的可执行文件
python pyinstaller-1.3/Build.py linuxlaptop.spec
执行完成后将在当前目录生成可执行的linuxlaptop文件,如有问题欢迎与我交流:linuxlaptop.cn。
========================================================================
以前从来没有试过把Python打包,昨天试了试,发现打包也是一件挺容易的事情.Python打包有很多种选择.cx_Freeze是一种, py2exe也可以,还有一个pyinstaller.我用的是cx_Freeze,而py2exe因为sf实在太慢连不上.所以没办法,只好先用可以下载的.cx_Freeze的资料比较少,不过不是太痛苦,因为好像cx会比py2exe简便易用,而且好像是跨平台的,不错不错.
cx_Freeze的用法就一个命令FreezePython.exe,打包也很快捷:
FreezePython.exe --install-dir="/your/path/to/install" app.py
然后就会把app.py以及其依赖的所有模块,包和库全部归整后放到--install-dir 所指的路径下.
碰到两个问题,一个是文件编码,一开始总是说找不到gb2312的编码,后面google了一下,发现要这么做:
在app.py中添加from encodings import gbk 一句,然后就可以了.
如果用到了gettext,要注意po文件中的
"Content-Type: text/plain; charset=gbk "
"Content-Transfer-Encoding: cp936 "
这两句要这样写,字符集要用gbk,不要用gb2312.
另一个问题是控制台隐藏:
默认cx_Freeze打包后都是控制台程序,就算你打包一个wxPython程序,也会有一个黑黑的控制台在后面做背景,要去掉控制台就要这样:
FreezePython.exe --install-dir="yourinstallpath" --base-binary=Win32GUI.exe app.py
加了--bash-binary 后就可以只运行前台的界面了,不过如果程序出错,会弹出一个错误对话框,说找不到traceback模块.
这就要在app.py文件中加一句:
import traceback
把错误反馈以对话框形式弹出.