SystemError: Parent module '' not loaded, cannot perform relative import
我有以下目录:
1 2 3 4 5 | myProgram └── app ├── __init__.py ├── main.py └── mymodule.py |
MyMeult.Py:
1 2 3 4 5 6 7 | class myclass(object): def __init__(self): pass def myfunc(self): print("Hello!") |
MY.PY:
1 2 3 4 5 | from .mymodule import myclass print("Test") testclass = myclass() testclass.myfunc() |
但是当我运行它时,我会得到这个错误:
1 2 3 4 | 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 |
这工作:
1 | from mymodule import myclass |
但当我输入这个代码时,并没有自动完成,并且有一条消息:"Unresolved Reference:MyModule"和"Unresolved Reference:MyClass"。在我正在进行的另一个项目中,我得到了一个错误:"importerror:没有名为"mymodule"的模块。
我能做什么?
我也遇到了同样的问题,我用绝对导入而不是相对导入来解决它。
例如,在您的案例中,您将编写如下内容:
1 | from app.mymodule import myclass |
您可以在文档中看到。
Note that relative imports are based on the name of the current
module. Since the name of the main module is always"__main__ ",
modules intended for use as the main module of a Python application
must always use absolute imports.
我通常使用这种解决方法:
1 2 3 4 | try: from .mymodule import myclass except Exception: #ImportError from mymodule import myclass |
这意味着您的IDE应该选择正确的代码位置,而Python解释器将设法运行您的代码。
如果你只是在
1 | from mymodule import myclass |
如果要在其他文件夹上调用
1 | from .mymodule import myclass |
例如:
1 2 3 4 5 6 | ├── app │ ├── __init__.py │ ├── main.py │ ├── mymodule.py ├── __init__.py └── run.py |
Me.Py
1 | from .mymodule import myclass |
Py
1 2 | from app import main print(main.myclass) |
所以我认为你的主要问题是如何称呼
如果在bash shell的命令行中运行该脚本,那么问题将得到解决。为此,请使用
1 | [username@localhost myProgram]$ |
而不是这样:
1 | [username@localhost app]$ |
一旦出现,就不用按以下格式运行脚本:
1 | python3 mymodule.py |
将其更改为:
1 | python3 app/mymodule.py |
根据树图的结构,这个过程可以在一个级别上再次重复。还请包括为您提供上述错误消息的编译命令行。