python模塊導入規則(相對導入和絕對導入)

  python模塊可以相對導入和絕對導入,但這兩者是不能替換使用的。本文主要討論工作目錄下模塊之間的導入規則。其中相對導入前面有一個'.',表示從該腳本所在目錄開始索引,而絕對導入前面沒有'.',表示從根目錄開始索引。首先明確一點,python認爲的根目錄爲當前運行的腳本所在的目錄,而不是vscode打開的工作目錄的根目錄。則基於python運行時的根目錄,python模塊導入主要依據以下三個規則:

  1、對於需要通過根目錄的導入路徑,必須使用絕對路徑,否則出錯。

  2、對於根目錄以下子目錄模塊之間的導入,此時沒有通過根目錄,則必須使用相對路徑,否則出錯。

  3、無法導入根目錄的父目錄及以上目錄中的模塊。

  比如,vscode打開如下名爲import_test的目錄:

d1
--__init__.py
--d1p1.py
--d1p2.py
--d11
----__init__.py
----d11p1.py
----d11p2.py
d2
--__init__.py
--d2p1.py
--d21
----__init__.py
----d21p1.py
main.py

  當運行main.py時,此時根目錄爲import_test

  1、如果main.py需要導入d1p1.py中的模塊,則必須使用絕對導入。

  2、如果d1p1.py需要導入d11p1.py中的模塊,則必須使用相對導入。

  3、如果d1p1.py需要導入d2p1.py中的模塊,則必須使用絕對導入。

  當運行時d1p1.py時,此時根目錄爲d1

  1、如果d1p1.py需要導入p11p1.py中的模塊,則必須使用絕對導入。

  2、如果d11p1.py需要導入d11p2.py中的模塊,則必須使用相對導入。

  3、如果d11p1.py需要導入d1p2.py中的模塊,則必須使用絕對導入。

  4、d1p1.py無法導入d2目錄下和main.py中的模塊。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章