python import 情況概覽

2022-09-11 22:54:18 字數 1636 閱讀 8658

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...