初步安装、使用PyPy
最近一周,一直在琢磨着怎么提高python的运行效率,前几天还写了一篇关于提高运行效率的博文,有兴趣的可以去看看,地址如下:http://11026142.blog.51cto.com/11016142/1858568
这些都是从Python语言本身的角度提高优化代码来提高效率,看过几本Python教材、也看过网上的一些优秀博文,都说PyPy是Python的未来,是提高python运行效率的终极杀器,今天上午闲来无事,决定也来了解一下这个杀器。首先是在网上查资料大概了解一下PyPy是什么东西,在这里我就不过多介绍,网上有资料。这里主要介绍PyPy的安装、使用以及如何为PyPy安装第三方包。申明:所有系统是ubuntu 16.04 LTS
(一)安装
用linux命令安装,如下:
sudo add-apt-repository ppa:pypy/ppasudo apt-get updatesudo apt-get install pypy pypy-dev
当然 也可以去官网下载压缩包,解压缩后就可以运行了,没试过,在此不叙述。(其实先开始是计划通过压缩包这种方法来安装的,无奈住的地方网上太慢,而且经常下载到百分之二十左右的时候就提示"禁止访问"或者"连接断开",无奈放弃了,等有时间在公司的电脑上用这种方法安装吧,之后在补上)
如何安装成功的话,打开终端,输入pypy,会有如下类似的提示:
上面有提示:PyPy 5.4.1,表示安装成功。
(二)为PyPy安装第三方包
打开pypy的安装目录,我的电脑/usr/lib/pypy/下,(不同的系统可能会有差异,如果你的不在该目录下,可以在本地搜索'pypy',应该也很容易找到)。打开该目录,里面有个dist-packages包,刚开始,包里有个README文件,打开该文件,里面有这样一段话:
This directory exists so that 3rd party packages can be installed
here. Read the source for site.py for more details.
这说明该目录下是存放pypy的第三方包的。
然后我做了一个实验,看下图
看明白了吗?因为我之前没安装pypy时,在本地的python环境中已经安装了django,我就想能不能吧这个django直接拷贝到pypy安装路径的/usr/lib/pypy/dist-packages/ 包里,看能不能运行,结果是可以的,这是一种笨办法吧,要为pypy安装第三方包,还是要用到安装神器pip,那么怎么在pypy下安装pip呢?
回想下,python环境中怎么安装pip,其实都是一样的
去官网下载安装包,然后解压,再讲解压后的包拷贝到/usr/lib/pypy/dist-packages/ 下,解压后的pip包里有个setup.py文件,执行命令pypy setup.py install即可完成安装。
命令如下:
下载安装包:
wget https://pypi.python.org/packages/e7/a8/7556133689add8d1a54c0b14aeff0acb03c64707ce100ecd53934da1aa13/pip-8.1.2.tar.gz#md5=87083c0b9867963b29f7aba3613e8f4a--2016-10-06 15:51:17-- https://pypi.python.org/packages/e7/a8/7556133689add8d1a54c0b14aeff0acb03c64707ce100ecd53934da1aa13/pip-8.1.2.tar.gz
解压安装包:
tar -xzvf pip-8.1.2.tar.gz
(注意路径,每个系统设置的默认下载路径不同)
将解压后的pip文件夹copy到/usr/lib/pypy/dist-packages/ 下
cp -r /home/liulonghua/pip-8.1.1/ /usr/lib/pypy/dist-packages/
cd到该目录下,执行如下命令:
pypy setup.py install
那就基本安装成功了。看看我安装时的效果。
上图是下载安装包,解压可以用tar命令,也可以用解压工具。
上图是将pip解压包拷贝到/usr/lib/pypy/dist-packages/,但是我还没有安装就急着安装requests包,结果报错,提示No module name pip,然后我cd到相应目录下,执行命令pypy setup.py install,但是安装失败?为什么呢?因为权限不够,要用root身份安装才行,看下图。
然后我切换到root身份,在执行安装命令,安装成功了。
注意:为了区分python和pypy,pypy的脚本都是用pypy来执行的。
下面来测试下安装requests包。
命令很简单,pypy环境下用pip安装包命令如下:
pypy -m pip install package
如果报错,可能是权限问题,加个sudo即可,即sudo pypy -m pip install package
如果想卸载安装包的话,用
pypy -m pip uninstall package
还有一点要注意,如果你电脑里没有virtualenv(这是一个好东西,可以根据你的实际需求,安装不同的开发环境,而且环境切换也很方便),在安装包的时候要注意了,以前没安装pypy时,我执行命令sudo pip install package,它会自动安装到python安装目录的dist-packages,但是现在它会自动安装到pypy的安装目录的dist-packages包里(不知道为什么),所以这时得用命令sudo python -m pip install package来区分,要在原有的命令中加入pypy和python进行区分,是不是很麻烦?如果觉得麻烦就安装一个virtualenv吧。
(三)pypy初步使用
pypy的优势就是运行效率高,看个简单的例子吧
代码如下:
#coding=utf-8import timedef test(n,m): m=m vals = [] keys = [] for i in xrange(m): vals.append(i) keys.append('a%s'%i) d = None for i in xrange(n): d = dict(zip(keys, vals)) return dst = time.time()print test(1000000,100)print 'use:', time.time() - st
先在python2.7上运行,结果如下:
再在pypy环境下运行,结果如下:
我用的IDE是pycharm,切换环境也很方便,对vim用的还不是很熟练,所以还登不了大雅之堂,哈哈,今天就讲到这里,这只是记录了一些我初探pypy的经验,以后有更好的学习经验会和大家分享,不正之处,恳请批评指正。