2012-03-26 66 views

回答

4

有多種選擇。如果您使用Python 2.6或更高版本,則可以使用Python的Distutils支持的user installation scheme將Python模塊安裝到您的主目錄中。如鏈接中所述,只需將--user添加到setup.py install命令。另一個流行的選擇是使用第三方virtualenv包創建一個或多個獨立的本地Python環境。

更新:對於user installation scheme,在Python啓動過程中檢查用戶site-packages目錄。如果該目錄存在,則將其添加到系統站點包目錄之前的sys.path。例如,使用Debian Linux安裝:

$ python2.7 -c 'import site; print(site.USER_SITE)' 
/home/nad/.local/lib/python2.7/site-packages 
$ ls -l /home/nad/.local/lib/python2.7/site-packages 
ls: cannot access /home/nad/.local/lib/python2.7/site-packages: No such file or directory 
$ python2.7 -c 'import sys; print(sys.path)' 
['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PIL', '/usr/lib/pymodules/python2.7'] 
# user site-packages dir doesn't exist so it's not in sys.path 
$ mkdir -p ~/.local/lib/python2.7/site-packages 
$ python2.7 -c 'import sys; print(sys.path)' 
['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/home/nad/.local/lib/python2.7/site-packages', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PIL', '/usr/lib/pymodules/python2.7'] 
# now user site-packages dir exists so it is in sys.path and before /usr/lib ones 
+0

但是,如何確保這將覆蓋系統上已存在的相同的較舊的全局程序包? – 2012-03-26 06:13:56

+0

如果您閱讀@Ned給出的鏈接,那麼它將使用'userbase'來安裝該模塊,以便它不會覆蓋系統默認模塊。當你導入任何模塊時,它將檢查'userbase'的lib的'python'目錄,然後它將檢查系統'python'目錄。 – Nilesh 2012-03-26 06:26:50

+0

這兩種方法都使用Python的搜索順序,可以在'sys'模塊中用作'sys.path',以確保首先搜索用戶目錄。 – 2012-03-26 06:29:53

相關問題