init用作init某個資料夾成為python model時
在__init__.py
import 和該檔案同級的某個py檔案不成功
而__init__ 用作普通的py檔案指令碼執行的時候
import 和該檔案同級的某個py檔案成功
相對引用只能用在from ... import ...上
import .model as 語法錯誤
作為普通py檔案指令碼執行的時候,使用相對引用
from .model import * 不成功,不能在前面加 "."
作為普通的py檔案import 同級檔案.py 時
只能用絕對引用 即import module.py 用 from .module import 出錯/b/
bb.py
a/aa.py
c.py
作為普通bb.py檔案 import 與其父目錄b同級的目錄a下的aa.py檔案時
import a.aa 不成功
然而如果在與其父目錄b同級的c.py檔案 裡 import b.bb.py檔案時
b.bb.py檔案裡的import a.aa 語句能夠成功執行。
大致明白了,在c.py檔案裡執行b.bb.py檔案裡的 import語句等價於在
c.py檔案裡執行 import語句,所以能夠import a.aa 成功
import 時,
先執行與 module.py父目錄,也就是與其同級下的__init__檔案
再執行各個模組裡的import 語句
相對引用的實質是:
import .module <=> importname.model
所以當在同級的py檔案裡呼叫 import .module 時,實際上呼叫的是
importmain.module 而main不是乙個模組的名稱,所以
同級相對呼叫會報錯:
"modulenotfounderror: no module named 'main.module:mainis
not a package"
而當該py檔案被其他檔案呼叫時,__name__被替換成了模組名稱,所以那個
模組下的import .module可以被執行成功
總結:1.該模組被其他模組呼叫時,該模組下可以使用 相對匯入
import .module語句
2.當該模組自身執行時,不能使用相對匯入, 只能使用import module
3.該模組裡對於與其父目錄同級目錄下的py檔案呼叫:
import a.aa
如果該模組自身執行則該語句執行失敗
如果該模組被與其父目錄同級的c.py檔案呼叫時,則該語句執行成功
其等價於在c.py中執行 import a.aa
4.attempted relative import beyond top_level packages
init.py檔案作為init某個資料夾的時候,只能用相對引用
from .model import *
用絕對引用 import model 不成功。
Python import過程解析
模組 乙個.py檔案 包 乙個資料夾,裡面一定包括乙個 init py檔案,可能包括子包和模組 module.py a 1 print module.py test.py import module print module.a 執行test.py,執行結果 module.py 1結論 import...
python import模組方法
python語言中import的使用很簡單,直接使用import module name語句匯入即可。這裡我主要寫一下 import 的本質。模組 module 用來從邏輯 實現乙個功能 上組織python 變數 函式 類 本質就是 py檔案。檔案是物理上組織方式 module name.py 模組...
python import模組方法
python包含子目錄中的模組方法比較簡單,關鍵是能夠在sys.path裡面找到通向模組檔案的路徑。下面將具體介紹幾種常用情況 1 主程式與模組程式在同一目錄下 如下面程式結構 src mod1.py test1.py 若在程式test1.py中匯入模組mod1,則直接使用importmod1或fr...