本質:導入模塊的本質就是把python文件解釋一遍, 導入包的本質就是把包文件下面的init.py文件運行一遍。 1)同目錄下模塊的導入 #同級目錄下模塊的導入 import module_name #直接導入模塊 import module1_name,module2_name #導入多個模塊 使用:模塊名.函數名 from modeule_name import * #導入模塊中全部函數和變量等。。。不推薦使用 from modeule_name import m1,m2,m3 #只導入模塊中函數m1,m2,m3 使用:直接使用m1,m2,m3就能夠 from modeule_name import m1 as m #導入module_name模塊中函數m1而且將函數從新複製給m 使用:直接用調用m 2)不一樣目錄下模塊的導入 #不一樣目錄下模塊的導入 當前文件main.py #目錄結構 # ├── Credit_card # │ # ├── core # │ ├── __init__.py # │ └── main.py # 當前文件 # ├── conf # │ ├── __init__.py # │ └── setting.py # │ └── lzl.py import sys,os #獲取當前目錄的上上級目錄絕對路徑,也就是Credit_card credit_card_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #把Credit_card目錄加入到系統路徑 sys.path.insert(0,credit_card_path) #查看系統環境路徑 print(sys.path) 例子: 若是main文件夾要用conf文件夾下的setting文件,直接導入是不行的 應該: fron conf import setting setting.函數名() #這樣執行setting模塊中的函數 3)不一樣目錄下模塊連環導入 #不一樣目錄多個模塊之間互相導入 #目錄結構 # ├── Credit_card # │ # ├── core # │ ├── __init__.py # │ └── main.py # 當前文件 # ├── conf # │ ├── __init__.py # │ └── setting.py # │ └── lzl.py 若是在setting文件中調用模塊lzl.py,能夠用語句 import lzl,可是若是這樣, 咱們在main.py文件中調用setting文件時,就會報錯#ImportError: No module named 'lzl' 這個時候咱們須要將 import lzl 換爲 from . import lzl 而後main.py文件中調用setting文件時,才能夠正常執行。 4)不一樣目錄多個模塊相互導入,用相對路徑 Root ├── Credit_card ├── README.md ├── core │ ├── __init__.py │ └── main.py ├── conf │ ├── __init__.py │ └── setting.py │ └── lzl.py lzl.py文件內容: def name(): print("name is lzl") setting.py文件內容: #當前文件settings,調用lzl.py模塊 相對路徑 from . import lzl #經過相對路徑導入模塊lzl def set(): print("in the settings") lzl.name() #運行lzl模塊下的函數 set() #執行函數set Core目錄下的文件中的mian.py文件內容: #不一樣目錄之間連環import 當前文件main.py 相對路徑 from Root.Credit_card.conf import settings settings.set() #執行settings下的函數 注意: lzl.py以及settings.py文件未變,main.py文件去掉了繁雜的sys.path添加的過程, 直接執行from Root.Credit_card.conf import settings,使用相對路徑,更加 簡潔方便!