SystemError:父模块''未加载,无法执行相对导入
我有以下目录:
myProgram └── app ├── __init__.py ├── main.py └── mymodule.py mymodule.py:
 class myclass(object): def __init__(self): pass def myfunc(self): print("Hello!") 
main.py:
 from .mymodule import myclass print("Test") testclass = myclass() testclass.myfunc() 
但是当我编译它,然后我得到这个错误:
 Traceback (most recent call last): File "D:/Users/Myname/Documents/PycharmProjects/myProgram/app/main.py", line 1, in <module> from .mymodule import myclass SystemError: Parent module '' not loaded, cannot perform relative import 
这工作:
 from mymodule import myclass 
但我没有自动完成,当我input这个,有一个消息:“未解决的引用:mymodule”和“未解决的引用:myclass”而在我的其他项目,我正在处理,我得到的错误:“ImportError:没有名为“mymodule”的模块
我能做什么?
我有同样的问题,我通过使用绝对导入,而不是相对的解决了它。
例如你的情况,你会写这样的东西:
 from app.mymodule import myclass 
你可以在文档中看到。
请注意,相对导入是基于当前模块的名称。 由于主模块的名称始终为“
__main__”,因此用作Python应用程序主模块的模块必须始终使用绝对导入。
 如果你只是运行app下的main.py ,只需导入 
 from mymodule import myclass 
 如果你想调用其他文件夹的main.py ,使用: 
 from .mymodule import myclass 
例如:
 ├── app │  ├── __init__.py │  ├── main.py │  ├── mymodule.py ├── __init__.py └── run.py 
main.py
 from .mymodule import myclass 
run.py
 from app import main print(main.myclass) 
 所以我认为你的主要问题是如何调用app.main 。 
我通常使用这个解决方法:
 try: from .mymodule import myclass except Exception: #ImportError from mymodule import myclass 
这意味着您的IDE应该select正确的代码位置,python解释器将设法运行您的代码。
 如果您在bash shell的命令行中运行脚本,则该问题将得到解决。 为此,请使用cd ..命令更改您的脚本将运行的工作目录。 结果应该是这样的: 
 [username@localhost myProgram]$ 
而不是这个:
 [username@localhost app]$ 
一旦你在那里,而不是以下面的格式运行脚本:
 python3 mymodule.py 
将其更改为:
 python3 app/mymodule.py 
这个过程可以再一次重复一次,这取决于你的树形图的结构。 还请包括正在给你提到的错误信息的编译命令行。