Python匯入自定義模組
專案中想使用以前的程式碼,或者什麼樣的需求致使你需要匯入外部的包
如果是web 下,比如說django ,那麼你新建一個app,把你需要匯入的說用東東,都寫到這個app中,然後在setting中的app也配上基本就ok了
如果是原生代碼,可以有幾種方式,
1、這種最簡單,也可能最不實用,將你的外部檔案放到跟需要呼叫外部檔案的檔案同一個包下,同一目錄
folder
------toinvoke.py
------tobeinvoded.py
這樣在toinvoke.py 中引入
import toveinvoked 或 from tobeinvoked import *
即可
2、你的其他檔案不是單個檔案,或者不能如上所說放到同一目錄下,而是在不同目錄中,子目錄
folder
------tobeinvodedA.py
------tobeinvodedB.py
------tobeinvodedC.py
toinvoke.py
這種情況,現在folder 下新建一個__init__.py 的空檔案,此時的folder不再是一個普通的資料夾,而是一個包 package,現在像這樣
folder #資料夾 現在的性質為一個python包package
------__init__.py
------tobeinvoded.py
------tobeinvodedA.py
------tobeinvodedB.py
------tobeinvodedC.py
toinvoke.py
這樣在toinvoke.py 中引入
import folder.toveinvoked 或 from folder.tobeinvoked import *
即可
3、同理,如果是如下的情況,folderB中的模組要呼叫folderA中的模組,方法同上,有什麼改變,你已經知道了
folderA
------tobeinvoded.py
------tobeinvodedA.py
------tobeinvodedB.py
------tobeinvodedC.py
folderB
--------toinvoke.py
這樣在toinvoke.py 中引入
import folder.toveinvoked 或 from folder.tobeinvoked import *
即可
4、將要被呼叫的程式碼拷貝到$PYTHONHOME$\Lib\site-packages 下面,這個就跟Eclipse外掛安裝差不多
5、在$PYTHONHOME$\Lib\site-packages 下面新建一個.pth檔案,比如說是MyPackage.pth,裡面的內容是你的包的絕對路徑比如:E:/PythonPrj
那麼,在E:/PythonPrj下的所有包都可以按照包所在的相對路徑引入,這個跟Eclipse外掛安裝的link 方式差不多
6、跟上面的差不多,也可以加個環境變數,這個就不多說了
總結、看看Python的包搜尋路徑
Python會在以下路徑中搜索它想要尋找的模組:
1. 程式所在的資料夾
2. 標準庫的安裝路徑
3. 作業系統環境變數PYTHONPATH所包含的路徑
將自定義庫的路徑新增到Python的庫路徑中去,有如下兩種方法:
1. 動態的新增庫路徑。在程式執行過程中修改sys.path的值,新增自己的庫路徑
import sys
sys.path.append(r'your_path')
2. 在Python安裝目錄下的\Lib\site-packages資料夾中建立一個.pth檔案,內容為自己寫的庫路徑。示例如下
E:\\work\\Python\\http
E:\\work\\Python\\logging