当前位置: 首页 > 知识库问答 >
问题:

SysteMerror:父模块“”未加载,无法执行相对导入[重复]

夏侯旻
2023-03-14
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

但是,当我键入它时,没有自动完成,并且有一条消息:“Unresolved Reference:MyModule”和“Unresolved Reference:MyClass”。在我正在进行的另一个项目中,我得到了一个错误:“Imporderror:没有名为'MyModule'的模块。

共有1个答案

贺栋
2023-03-14

我也有同样的问题,我通过使用绝对导入而不是相对导入来解决它。

from app.mymodule import myclass

您可以在文档中看到。

请注意,相对导入基于当前模块的名称。由于主模块的名称始终是“__main__”,因此用作Python应用程序主模块的模块必须始终使用绝对导入。

编辑:如果遇到此错误imporderror:没有名为'app.app'的模块;'app'不是包,请记住在app目录中添加__init__.py文件,以便解释器可以将其视为包。如果文件为空也没关系。

 类似资料:
  • 我想使用这个批下载Udemy视频我写的一切都正确(我想,但有一个问题)与某种。 图为误差:

  • 根据这个答案,您可以使用来使用类似这样的相对导入: 为什么相对导入不适用于sklearn。特征提取。文本 我验证了是一个具有以下功能的模块: 编辑 “不工作”,我的意思是它不导入模块。 我正在使用Python 3.4 绝对方式工作: 相对方式不:

  • 所以我今天遇到了一个奇怪的问题。我在IntelliJ中的一个模块有一些问题,所以我决定我应该试着把它关闭,然后从一个新的结账中重建它。我从Project窗口中删除了该模块,然后从我的文件系统中删除/重新下载了该模块。 我回到Intellij并尝试导入模块。它让我完成了选择选项的正常步骤,然后似乎成功了。只是它没有重新出现在我的项目窗口中。 我不确定我做了什么,但重新创建整个项目在这一点上不是一个选

  • OS- Neon Linux我有以下命令行输出: 请告诉我,为什么PyCharm不能导入模块?

  • 问题内容: 给定这样的目录结构 我如何使用Python的 相对进口 到进口的?通过将其添加到路径中,可以得到一个可行的解决方案,但这很丑陋。有没有一种方法可以在Python 2.7中简单地处理一个? 这是此问题的更复杂版本: 从父文件夹导入模块 问题答案: 正确的相对导入为: 但是,相对进口仅在一个包装中起作用。如果是软件包,则可以在此处使用相对导入。如果不是包,则不能。 因此,如果您在中运行脚本

  • 问题内容: 给定相对路径,如何导入Python模块? 例如,如果包含和,和包含,我怎么导入到? 这是一个视觉表示: 希望包含,但是重组文件夹层次结构不是一种选择。 问题答案: 假设你的两个目录都是真实的Python包(文件中确实有文件),那么这是一个相对于脚本位置包含模块的安全解决方案。 我假设你想这样做,因为你需要在脚本中包括一组模块。我在多个产品的生产环境中使用了此功能,并在许多特殊情况下工作