Python:尝试从同一包中导入模块时出现“ModuleNotFoundError”

Posted

技术标签:

【中文标题】Python:尝试从同一包中导入模块时出现“ModuleNotFoundError”【英文标题】:Python: 'ModuleNotFoundError' when trying to import module from the same package 【发布时间】:2021-07-12 18:00:33 【问题描述】:

我在 Windows 10 的 PyCharm 上使用 python 3.9。 我的项目结构是这样的:

/application
   /model
      /games.py
      /lock.py
      /pointClass.py
   /resources
     ...file



/lib
   ...file

在 Pycharm ty 程序上有效,但如果我尝试在 bash 上打开它(在 Linux 或 MacOs 上),它会给我这个错误:

Traceback (most recent call last):
  File "games.py", line 16, in <module>
    from application.model.lock import RWLock
ModuleNotFoundError: No module named 'application'

在我的 games.py 文件中,我写这个来导入其他文件:

from application.model.lock import RWLock
from application.model.pointClass import *

我该如何解决这个问题? 如果你想看看我的整个项目,你可以去这个 github repo:https://github.com/MarioAvolio/BomberFriends

【问题讨论】:

您尝试从哪个目录运行程序? 【参考方案1】:

这是因为 Pycharm 设置了自己的虚拟环境,而从终端运行时需要自己设置,我重新创建了您的问题并找到了解决方案,首先您可以删除绝对导入并使用:

from lock import RWlock

或者您可以编辑您的环境并在 games.py 顶部设置 sys.path,如下所示:

sys.path.append('Path to your project') 

【讨论】:

【参考方案2】:

事实上,games.pylock.pypointClass.py 文件在同一个文件夹中,为什么不直接像这样导入它:

from lock import RWLock
from pointClass import *

【讨论】:

以上是关于Python:尝试从同一包中导入模块时出现“ModuleNotFoundError”的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 3 中导入模块时出现 AttributeError

在 python 2.7 中导入 zipfile 模块时出现语法错误

尝试在 Jasmine 规范文件中导入类时出现“语法错误:无法在模块外使用导入语句”

在 Angular 6 中导入“ngx-bootstrap/datepicker”模块时出现错误

尝试在 Django 应用程序的 js 文件中导入 vue.js 时出现“未捕获的语法错误:无法在模块外使用 import 语句”

在 Python 中导入 Tkinter 时出现 ImportError [重复]