初步安裝、使用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/ppa
sudo apt-get update
sudo apt-get install pypy pypy-dev

當然 也可以去官網下載壓縮包,解壓縮後就可以運行了,沒試過,在此不敘述。(其實先開始是計劃通過壓縮包這種方法來安裝的,無奈住的地方網上太慢,而且經常下載到百分之二十左右的時候就提示“禁止訪問”或者“連接斷開”,無奈放棄了,等有時間在公司的電腦上用這種方法安裝吧,之後在補上)

如何安裝成功的話,打開終端,輸入pypy,會有如下類似的提示:

wKiom1f1-j-hd4JRAABDPzmIH-o700.png-wh_50

上面有提示: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的第三方包的。

然後我做了一個實驗,看下圖

wKioL1f1_pLT9MHwAAGRA9wUuxU278.png-wh_50

看明白了嗎?因爲我之前沒安裝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

那就基本安裝成功了。看看我安裝時的效果。

wKioL1f2B4GyXJhIAAFUgY39hQY320.png-wh_50

上圖是下載安裝包,解壓可以用tar命令,也可以用解壓工具。


wKiom1f2B9iTSCu9AALCf6R61ug912.png-wh_50

上圖是將pip解壓包拷貝到/usr/lib/pypy/dist-packages/,但是我還沒有安裝就急着安裝requests包,結果報錯,提示No module name pip,然後我cd到相應目錄下,執行命令pypy setup.py install,但是安裝失敗?爲什麼呢?因爲權限不夠,要用root身份安裝才行,看下圖。

wKiom1f2CNzBwjUmAAFKt32l0PQ408.png-wh_50

然後我切換到root身份,在執行安裝命令,安裝成功了。

wKioL1f2CRPjmgRQAAB38RJ4QEY312.png-wh_50

注意:爲了區分python和pypy,pypy的腳本都是用pypy來執行的。


下面來測試下安裝requests包。

命令很簡單,pypy環境下用pip安裝包命令如下:

pypy -m pip install package

如果報錯,可能是權限問題,加個sudo即可,即sudo pypy -m pip install package

wKiom1f2DCPTvDtSAAEiZphetgE500.png-wh_50


wKioL1f2DDmBI49SAAC6zBqbImo906.png-wh_50


如果想卸載安裝包的話,用

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上運行,結果如下:

wKiom1f2DbjS6rwSAAAsn7fHoVg907.png-wh_50


再在pypy環境下運行,結果如下:

wKioL1f2DhKgSDzKAAAq9-5BkIQ702.png-wh_50


我用的IDE是pycharm,切換環境也很方便,對vim用的還不是很熟練,所以還登不了大雅之堂,哈哈,今天就講到這裏,這只是記錄了一些我初探pypy的經驗,以後有更好的學習經驗會和大家分享,不正之處,懇請批評指正。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章