Python中的相對匯入語法

2021-08-21 21:17:33 字數 1067 閱讀 6129

python中支援相對匯入語法,即可以相對於某乙個package進行匯入,具體語法如下:

#

匯入"./dir2/spam.py", .表示當前目錄

from .dir2 import

spam

#匯入"./../dir3/spam.py", .表示當前目錄, ..表示上一級目錄

from ..dir3 import spam

要使用相對匯入語法,必須滿足以下3個條件:

1 該語法只能在package中使用(即使用該語法的檔案位於可以位於乙個普通的package中《包含__init__.py>,也可以位於乙個namespace package中),否則匯入失敗;

2 只有from有相對匯入語法,import沒有

3 要使用相對匯入語法,目錄前面必須有.或者..,否則,對於python 2.x和python 3.x來說行為還有少許差別,下面提到。

絕對匯入與相對匯入

所謂絕對匯入,就是只在sys.path的路徑進行搜尋匯入的package或者module檔案;

所謂相對匯入,就是只在當前package下進行搜尋匯入的package或者module檔案;

需要記住的是,只要使用了相對匯入的語法,無論是在python 2.x,還是python 3.x中,都只會在當前目錄進行搜尋。如果不使用相對匯入語法,那麼:

1 對於python 3.x來說,import和from語法只進行絕對匯入的搜尋;

2 對於python 2.x來說,import和from語法先進行相對匯入的搜尋,如果沒有搜尋到,再進行絕對匯入的搜尋

那如果python 2.x也想達到和python 3.x一樣的效果,即如果使用了相對匯入,就只在當前package下進行搜尋,否則,就使用絕對匯入的搜尋,該怎麼辦呢?如果真要這樣,可以在module檔案的第一行,加入如下語句:

from

__future__

import absolute_import

那麼,對於python 2.x,無論是import還是ffrom,只要沒使用相對匯入,都只進行絕對匯入的搜尋。

Python中的相對匯入語法

python中支援相對匯入語法,即可以相對於某乙個package進行匯入,具體語法如下 匯入 dir2 spam.py 表示當前目錄 from dir2 import spam 匯入 dir3 spam.py 表示當前目錄,表示上一級目錄 from dir3 import spam 要使用相對匯入語...

Python中的絕對匯入和相對匯入

如果你做過有多個檔案的python專案,那麼你一定用過import語句。即使是對於有多個專案的python支持者來說,import也會讓人困惑!你可能正閱讀本文,因為希望更深入地了解python中的匯入,尤其是絕對和相對匯入。在本教程中,你將了解兩者之間的差異,以及它們的利弊。我們立即開始吧!你需要...

python 相對匯入

參考 python2 預設相對匯入 python3 預設絕對匯入 python3 相對匯入只有兩個方式 1.在上層有乙個檔案main.py,可以直接執行main.py main.py 裡 from mypackage.myothermodule imoprt 2.或者在包的外層執行 m python...