初步安装、使用PyPy

2023-06-02,,

    最近一周,一直在琢磨着怎么提高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/ppa
sudo apt-get update
sudo 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-8
import time
def 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 d

st = time.time()
print test(1000000,100)
print 'use:', time.time() - st

先在python2.7上运行,结果如下:

再在pypy环境下运行,结果如下:

我用的IDE是pycharm,切换环境也很方便,对vim用的还不是很熟练,所以还登不了大雅之堂,哈哈,今天就讲到这里,这只是记录了一些我初探pypy的经验,以后有更好的学习经验会和大家分享,不正之处,恳请批评指正。