ModuleNotFoundError - 在 Pycharm 智能感知中找到模块,但在执行程序时找不到

ModuleNotFoundError - Module found in Pycharm intellisense but not when executing program

使用 PyCharm,我有一个具有以下结构的 SMTP 解析器项目:

- SMTP
  - Classes
    - Models
    - Transformers
  - Tests 

Tests 中,我像这样从 SMTP.Classes.Transformers 引用 类:

from SMTP.Classes.Transformers.myclass import MyClass

这有效,我的单元测试 运行 正确。

不过,我现在添加了代理文件myProxy.py:

- SMTP
  - Classes
    - Models
    - Transformers
  - Tests 
  - myProxy.py

myProxy.py 中,我尝试导入我的 类,就像上面一样:

from SMTP.Classes.Transformers.myclass import MyClass

当我输入 from S 时,PyCharm 实际上建议 SMTP 并且当我写出来时,它没有显示错误。我什至可以使用 "run" 按钮在 PyCharm 内启动 myProxy

但是,当我尝试从控制台 运行 myProxy.py 时,我得到 ModuleNotFoundError: No module named 'SMTP' 当我从每个受影响的文件中删除 SMTP 部分时,我可以从控制台中 运行 这部分。它甚至在 PyCharm 上 运行s。但是,PyCharm 出于某种原因确实将我的导入强调为错误。

这里的错误到底是什么?我该如何解决才能使 PyCharm 中没有错误,并且 运行 我的程序可以在 pycharm 和控制台上运行?

您可以尝试省略 SMTP 而只是将 Classes 标记为 PyCharm 中的源根目录,方法是:右键单击 Classes 目录 > 标记目录为 > 源根目录。