一般來說,我們會將自己寫的Python模組與python自帶的模組分開存放以達到便於維護的目的。那麼如何在Python中新增自定義的模組呢?
在解答這個問題之前,我們首先要明確兩點:
1.嚴格區分包(package)和資料夾。包的定義就是包含__init__.py的資料夾。如果沒有__init__.py,那麼就是普通的資料夾。
2.模組匯入寫法,注意只要包路徑,不要資料夾路徑。
Python 執行環境在查詢庫檔案時是對 sys.path 列表進行遍歷,如果我們想在執行環境中註冊新的類庫,主要有以下2種方法:
1. 在sys.path列表中新增新的路徑。
2. 將庫檔案複製到sys.path列表中的目錄裡(如site-packages目錄)。
我們可以透過執行一下程式碼來檢視sys.path
import sys print sys.path
執行結果:
['/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload', '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC', '/Library/Python/2.7/site-packages']
這兩種辦法中第一種比較簡單,而且對環境的影響最小。
下面我們來看一下第一種方法具體如何操作:
在python安裝目錄的site-package資料夾中新建pythontab.pth,上面site-package的路徑是:/Library/Python/2.7/site-packages,檔案的內容是:需要匯入的package所在的資料夾路徑。
這樣,Python 在遍歷已知的庫檔案目錄過程中,如果見到一個 .pth 檔案,就會將檔案中所記錄的路徑加入到 sys.path 設定中,這樣 .pth 檔案說指明的package也就可以被Python執行環境順利找到, 我們就可以像使用內建模組一樣引入自定義模組了。
如果預設的sys.path中沒有含有自己的模組或包的路徑,我們也可以使用sys.path.apend方法來動態加入包路徑。