2014-08-30 20 views
1

如果我正確地遵循https://docs.python.org/2/library/site.html,我需要將站點包目錄移動到/usr/lib/python2.7或將sys.prefix更改爲/ usr/local。當/ usr/local中的site-packages時,何時/如何從/ usr更改python sys.prefix?

前者似乎是錯誤的。對於後者,我可以找到的選項是直接編輯site.py或重新安裝python。編輯site.py是否被認爲太hacky,還是它是一個標準的事情? (ETA:我認爲這是一個標準的事情,因爲它就是這樣的,猜測我真的在問這是否是這種情況下的最佳選擇。)

或者我忽略了另一種選擇?

/usr/lib目錄VS在/ usr/local/lib目錄:

[email protected]:/etc/apache2$ ls -ld /usr/lib/python2.7/site-packages 
ls: cannot access /usr/lib/python2.7/site-packages: No such file or directory 

[email protected]:/etc/apache2$ ls -ld /usr/local/lib/python2.7/site-packages 
drwxrwsr-x 2 root staff 4096 Aug 29 2013 /usr/local/lib/python2.7/site-packages 

蟒蛇sys.prefix:

[email protected]:~$ python 
Python 2.7.3 (default, Apr 10 2013, 05:46:21) 
[GCC 4.6.3] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import sys 
>>> print sys.prefix 
/usr 

謝謝!

回答

1

創建要麼sitecustomize.pyusercustomize.py並追加到site.PREFIXES

import site 
SITEPKGS = '/usr/local/lib/python2.7/site-packages' 
site.addsitedir(SITEPKGS) 
site.PREFIXES += ['/usr/local'] 

假設/usr/local/lib/python2.7/site-packages是路徑到您的網站/usr/local包。

site文檔:

這些路徑的操作後,試圖導入一個名爲sitecustomize模塊,它可以執行任意站點特定的自定義。它通常由站點包目錄中的系統管理員創建。如果此導入失敗並出現ImportError異常,則會被忽略。如果啓動Python時沒有可用的輸出流,則與Windows上的pythonw.exe(默認情況下用於啓動IDLE)一樣,將忽略來自sitecustomize的嘗試輸出。除ImportError之外的任何異常都會導致此過程無聲並且可能是神祕的失敗。

之後,如果ENABLE_USER_SITE爲真,則嘗試導入名爲usercustomize的模塊,該模塊可以執行任意用戶特定的自定義。該文件旨在創建在用戶site-packages目錄中(見下文),該目錄是sys.path的一部分,除非被-s禁用。 ImportError將被默默忽略。

注意:凡usercustomize.py應該取決於site.USER_SITE的價值,這對Linux的Python的2.7是~/.local/lib/python2.7/site-packages

注意:也sitecustomize.py將通過在現場的包管理員放在sys.prefix文件夾中找到。

其他選項將設置環境變量:

  • 設置PYTHONUSERBASE/usr/local將從~/.local切換用戶的基本的Python目錄的位置,無論你將它設置爲。 注意:這將禁用您的軟件包安裝到~/.local/lib/python2.7/site-packages

    export PYTHONUSERBASE=/usr/local 
    
  • 設置PYTHONPATH前插/usr/local/lib/python2.7/site-packages這將它添加到sys.path

    export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH 
    

環境變量可以在你的.bashrc.bash_profile設置出口,加入到/etc/environment,使他們全系統的,或者你可以簡單普瑞森你的Python解釋器調用與所需的環境變量:

$ PYTHONPATH=/usr/local/lib/python2.7/site-packages python 
+1

爲什麼'輸入os'? – 2017-09-13 16:53:57

相關問題