1. 程式人生 > >python學習筆記——自定義模組匯入

python學習筆記——自定義模組匯入

一.pycharm的相關知識

Step1:檢視pycharm的執行配置


這是pycharm執行的配置介面,圖中的每個條目的具體意義可以參考:pycharm執行配置說明文件

要注意的是,兩個打勾的條目,裡面提到了兩個名詞content rootssource roots,具體請參考:Content Root

Step2:瞭解pycharm載入模組的原理

  1. 接下來,我們將通過一個Test專案中對modules的載入來理清這個過程。專案清單如下:

2.在ssnews.py中新增下列程式碼:

# coding=utf-8
__author__ = 'jgirl'
import sys
for item in sys.path:
    print item
print '——————————————————————————————————————————————————'

執行之後,效果如圖:

3.在ssave.py中新增如下程式碼:

# coding=utf-8
__author__ = 'jgirl'
import sys
from spider import snews
print len(sys.path)
for item in sys.path:
    print item
執行之後,效果如圖:


從控制檯的顯示資訊可以看到ssave.py在匯入snews模組時,執行了snews的程式碼,所以模組匯入路徑被顯示兩遍。

Step3:修改run config的配置如下圖:


執行snews.py效果如下圖:


程式正常執行,可是顯示出現了差異,細心的人會發現,少了“/home/jgirl/Workspace/PycharmProjects/Test”

這個路徑!!!!

執行ssave.py效果如下:

不出所料,程式報錯,從控制檯顯示資訊不難推斷,找不到spider這個module。原因不難推斷,spider不在pycharm當前的匯入路徑中。spider所在路徑正是“/home/jgirl/Workspace/PycharmProjects/Test”,所以“add content roots to PYTHONPATH”這句話的作用就不言而喻~\(≧▽≦)/~啦啦啦!

二.命令列執行python檔案,匯入自定義模組

Step1:將上述程式的配置更改為初始狀態,保證程式正常執行,run config的介面如下:


Step2:開啟程式所在資料夾,並執行snews.py程式,效果如下圖:

同理,執行ssave.py效果如圖:

到這裡,你是否覺得奇怪,為什麼明明在pycharm裡面能正常執行的程式,只是換了終端執行,就報錯了呢?哦,猛地想起剛剛去掉“add content roots to PYTHONPATH”的時候,也由”ImportError: No module named spider“的報錯,那會不會又是匯入路徑出了問題。我們試著在ssave.py的程式碼中加入下面這句程式碼:

sys.path.append("/home/jgirl/Workspace/PycharmProjects/Test")
儲存後再次執行,這次成功了!請看下圖:

三.總結

        經過一番折騰,現在可以明白“add content roots to PYTHONPATH”這句話的作用其實就是相當於在終端執行時手動新增的程式碼“sys.path.append("/home/jgirl/Workspace/PycharmProjects/Test")”。一般來說,在pycharm中執行程式碼不用手動新增自定義模組匯入路徑是因為系統已經幫你匯入好了,特別是自定義模組在與執行程式在同一個專案資料夾。而終端沒有自動匯入的功能。當然,你也可以修改PYTHONPATH,把一些常用的模組的路徑新增進去,方便使用。

        在這裡想推薦一個網址,可以方便以後瞭解更多關於pycharm的使用:pycharm使用說明文件