關於from . import和import的區別


 

 

from . import echo # 從當前目錄導入echo模塊

from .. import formats # 從上級目錄導入formats模塊

from ..filters import equalizer # 從上級目錄的filters目錄導入equalizer模塊

關鍵是最后一句話(此處為五毛翻譯):

    相對導入是基於當前模塊的name屬性的。當被執行模塊作為python應用的主模塊時,因為其name屬性為'__main__',所以在調用其他模塊時應使用絕對導入。

以下為個人理解:

    例如a.py和b.py在同一目錄下

    當a.py作為執行文件時,在a中調用b:import b就可以了,使用from <父目錄> import b,文本編輯器會報錯,但是執行順利。使用任何from . import xxx和from .. import xxx均會報錯:ModuleNotFoundError: No module named '__main__.d'; '__main__' is not a package

    當a作為模塊被調用時:import b會在sys.path的目錄中尋找b模塊,from同理。而from . import xxx和from .. import xxx順利執行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM