在Python中新增自定義模組

pythontab發表於2016-07-06

一般來說,我們會將自己寫的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方法來動態加入包路徑。


相關文章