相對導入運行錯誤(ModuleNotFoundError: No module named '__main__.test'; '__main__' is not a package)


1. 問題說明

在同級目錄下,test.py中定義A, 需要在test1.py中導入運行。
結構如下:

報錯內容如下:

>>> from .test import *
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "C:\Program Files\JetBrains\PyCharm 2019.3\plugins\python\helpers\pydev\_pydev_bundle\pydev_import_hook.py", line 21, in do_import
    module = self._system_import(name, *args, **kwargs)
ModuleNotFoundError: No module named '__main__.test'; '__main__' is not a package

2. 原因

如果直接執行一個模塊,那么它的 namemain。Python 會認為這個模塊是一個最頂層的模塊,而不管這個模塊在文件系統中的實際位置
理解了if name == "main":就知道是什么原因了。

3. 解決辦法

程序入口不要使用相對引入!!

如果一個.py文件a中使用了相對導入,那么a不能作為啟動入口,也就是說不能直接運行a,否則會報'main' is not a package錯誤。


免責聲明!

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



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