Python深入:修改Python搜尋路徑
當Python執行import語句時,它會在一些路徑中搜索Python模組和擴充套件模組。可以通過sys.path檢視這些路徑,比如:
>>> import sys >>> sys.path ['', '/usr/lib/python2.7/site-packages/demo_nova_hooks-5-py2.7.egg', '/usr/lib64/python27.zip', '/usr/lib64/python2.7', '/usr/lib64/python2.7/plat-linux2', '/usr/lib64/python2.7/lib-tk', '/usr/lib64/python2.7/lib-old', '/usr/lib64/python2.7/lib-dynload', '/usr/lib64/python2.7/site-packages', '/usr/lib64/python2.7/site-packages/gtk-2.0', '/usr/lib/python2.7/site-packages']
其中的空字串表示當前工作目錄。
當安裝第三方模組的時候,如果不是按照標準方式安裝,則為了能夠引用(import)這些模組,必須將這些模組的安裝路徑新增到sys.path中,有以下幾種方法:
1:最簡單的方法,是在sys.path的某個目錄下新增路徑配置檔案,最常見的就是在…/site-package/目錄下。路徑配置檔案的副檔名是”.pth”,其中的每一行包含一個單獨的路徑,該路徑會新增到sys.path列表中(已驗證)。”.pth”中的路徑既可以是絕對路徑,也可以是相對路徑,如果是相對路徑,則是相對於包含”.pth”檔案的路徑而言的。
2:另一種方法就是在Python標準庫中修改site.py檔案,並編輯sys.path。除非使用了-S開關選項,否則site.py在Python直譯器載入時會自動被引入(執行),作用是載入site-packages中的包和模組到python的sys.path裡面。所以,可以編輯site.py,然後加上下面的兩行內容即可:
import sys
sys.path.append('/xxx/xxxxx/')
3:有兩個環境變數可以編輯sys.path。 PYTHONHOME會改變prefix和exec_prefix的值,預設情況下prefix和exec_prefix都是/usr/local。庫搜尋路徑就是prefix/lib/pythonversion 和 exec_prefix/lib/pythonversion。
如果設定PYTHONHOME為單獨的路徑,則該路徑會替換prefix和exec_prefix的值,如果需要prefix和exec_prefix的值不同,則置PYTHONHOME為”prefix:exec_prefix”。比如如果將PYTHONHOME設定為”/www/python”,則sys.path就會變為
['', '/www/python/lib/pythonX.Y/', '/www/python/lib/pythonX.Y/plat-linux2', ...].
注意,修改了PYTHONHOME後,系統可能因找不到site模組而無法啟動python直譯器,所以,除非特別需求,不要修改該變數。
[[email protected] ~]# python
ImportError: No module named site
PYTHONPATH 環境變數指定的一系列路徑,會新增到sys.path中。比如如果PYTHONPATH設定為”/www/python:/opt/py”的話,則sys.path會以 ['/www/python','/opt/py'].開頭。注意這些路徑必須存在,因為site模組會將不存在的路徑刪除。