在linux環(huán)境中玩、用python,常常需要安裝額外的一些python lib
但是由于權(quán)限的問題,我們一般是無法往系統(tǒng)中/usr/local之類的目錄
里面寫東西的,而這些額外的lib又非得需要一個(gè)site-packages目錄來安裝
不可,雖然可以指定pure-lib之類的參數(shù),但是很多時(shí)候還是會(huì)出錯(cuò),尤其是現(xiàn)在很多python
lib都是使用的setuptools來生成安裝包,更是如此要求了,
- [gavin@Korea downloads]$ ll /usr/local/python24/lib/python2.4/site-packages/
- total 24
- drwxr-xr-x 2 root root 4096 Dec 18 16:05 PIL
- -rw-r--r-- 1 root root 4 Dec 18 16:05 PIL.pth
- -rw-r--r-- 1 root root 119 Dec 18 14:59 README
這可麻煩了,每個(gè)文件都是root的,旁人只能看,
其實(shí)這兒有個(gè)很好的解決方法:在自己的目錄下面,安裝一個(gè)虛擬的python:
在自己的目錄下面建立一些lib、include等等的目錄,構(gòu)成一個(gè)獨(dú)立的python小天地,這樣,系統(tǒng)范圍內(nèi)沒有的python庫,就可以自己動(dòng)手安裝在自己的小天地中
安裝,既不需要root權(quán)限,又可以滿足自己的需求,一舉兩得。
這些安裝步驟,當(dāng)然不需要我們重新造輪子,下載
http://peak./dist/virtual-python.py
這個(gè)腳本,使用你喜歡的python(有的環(huán)境提供多個(gè)python版本,比如DreamHost)
執(zhí)行一下這個(gè)virtual-python.py,就會(huì)自動(dòng)在~/下面建立所需的目錄(~/bin、/lib、
~/include),以及所需python版本,以及創(chuàng)建python所依賴的其他的.h頭文件、.py庫文件等等軟鏈接,而且會(huì)在~/bin/下面copy一個(gè)可以執(zhí)行的python文件,以后直接使用這個(gè)~/bin/python來執(zhí)行py程序,它就會(huì)自動(dòng)找到額外安裝在小天地中的那些python庫了。如果覺得把bin、lib、include放在~下面不好可以給virtual-python.py指定一個(gè)–prefix參數(shù):
- [gavin@Korea bin]$ python24 virtual-python.py --prefix=~/python-lib
- [gavin@Korea bin]$ pwd
- /home/gavin/python-lib/bin
- [gavin@Korea bin]$ ll
- total 2360
- -rwxrwxr-x 1 gavin gavin 2404367 Dec 18 16:53 python
會(huì)把那些bin、lib、include安裝在~/python-lib下面,
這下,你就可以使用easy__install來安裝自己額外需要的那些庫了,
不過等等先,由于此時(shí)使用的easy_install是系統(tǒng)范圍的,所以它會(huì)把東西安裝在
/usr/local之類的目錄下,所以我們得給我們自己的環(huán)境安裝一個(gè)easy_install。
下載
- wget http://peak.telecommunity.com/dist/ez_setup.py
- ~/python-lib/bin/python ez_setup.py
- Downloading http://cheeseshop.python.org/packages/2.4/s/setuptools/setuptools-0.6c3-py2.4.egg
- Processing setuptools-0.6c3-py2.4.egg
- creating /home/gavin/python-lib/lib/python2.4/site-packages/setuptools-0.6c3-py2.4.egg
- Extracting setuptools-0.6c3-py2.4.egg to
- /home/gavin/python-lib/lib/python2.4/site-packages
- Adding setuptools 0.6c3 to easy-install.pth file
- Installing easy_install script to /home/gavin/python-lib/bin
- Installing easy_install-2.4 script to /home/gavin/python-lib/bin
- Installed /home/gavin/python-lib/lib/python2.4/site-packages/setuptools-0.6c3-py2.4.egg
- Processing dependencies for setuptools==0.6c3
- [gavin@Korea downloads]$ ll ~/python-lib/bin/
- total 2376
- -rwxr-xr-x 1 gavin gavin 298 Dec 18 17:02 easy_install
- -rwxr-xr-x 1 gavin gavin 306 Dec 18 17:02 easy_install-2.4
- -rwxrwxr-x 1 gavin gavin 2404367 Dec 18 16:53 python
好了,我自己的easy_install已經(jīng)安裝好了,就可以使用它來安裝
自己想安裝的所有東西了,而且不用擔(dān)心權(quán)限的問題:
- [gavin@Korea downloads]$ ll ~/python-lib/lib/python2.4/site-packages/
我好像沒有simplejson呢,ok,安裝一個(gè),先:
- [gavin@Korea downloads]$ ~/python-lib/bin/easy_install simplejson
- Searching for simplejson
- Reading http://www.python.org/pypi/simplejson/
- Reading http://undefined.org/python/#simplejson
- Reading http://www.python.org/pypi/simplejson/1.4
- Best match: simplejson 1.4
- Downloading http://cheeseshop.python.org/packages/2.4/s/simplejson/simplejson-1.4-py2.4.egg#md5=4f18e31fd095cd54e5015e7b7a147093
- Processing simplejson-1.4-py2.4.egg
- Moving simplejson-1.4-py2.4.egg to
- /home/gavin/python-lib/lib/python2.4/site-packages
- Adding simplejson 1.4 to easy-install.pth file
- Installed /home/gavin/python-lib/lib/python2.4/site-packages/simplejson-1.4-py2.4.egg
- Processing dependencies for simplejson
- [gavin@Korea downloads]$ ll ~/python-lib/lib/python2.4/site-packages/
- total 76
- -rw-rw-r-- 1 gavin gavin 241 Dec 18 17:07 easy-install.pth
- lrwxrwxrwx 1 gavin gavin 51 Dec 18 16:53 PIL ->
- /usr/local/python24/lib/python2.4/site-packages/PIL
- lrwxrwxrwx 1 gavin gavin 55 Dec 18 16:53 PIL.pth ->
- /usr/local/python24/lib/python2.4/site-packages/PIL.pth
- lrwxrwxrwx 1 gavin gavin 54 Dec 18 16:53 README ->
- /usr/local/python24/lib/python2.4/site-packages/README
- drwxrwxr-x 4 gavin gavin 4096 Dec 18 17:02 setuptools-0.6c3-py2.4.egg
- -rw-rw-r-- 1 gavin gavin 29 Dec 18 17:02 setuptools.pth
- -rw-rw-r-- 1 gavin gavin 35898 Dec 18 17:07 simplejson-1.4-py2.4.egg
- [gavin@Korea downloads]$
非常漂亮
- [gavin@Korea downloads]$ ~/python-lib/bin/python
- Python 2.4.4 (#1, Dec 18 2006, 14:54:46)
- [GCC 3.4.3 20041212 (Red Hat 3.4.3-9.EL4)] on linux2
- Type "help", "copyright", "credits" or "license" for more information.
- >>> import simplejson
- >>> dir(simplejson)
- ['JSONDecoder', 'JSONEncoder', '__all__', '__builtins__', '__doc__',
- '__file__', '__loader__', '__name__', '__path__', '__version__',
- 'decoder', 'dump', 'dumps', 'encoder', 'load', 'loads', 'read',
- 'scanner', 'write']
- >>>
這個(gè)法子對(duì)使用dreamhost這類的虛擬主機(jī)帶來的便利是非常好的,所有的都是自己獨(dú)立的,再也不用擔(dān)心Django找不到PIL、找不到……出錯(cuò)了,也不需要在fcgi轉(zhuǎn)發(fā)程序里面添加一堆的sys.path,美哉!