我在 Pycharm 环境中与以下组织合作:
main.py
foo/
- __init__.py
- bar.py
- egg.py
- foo.py
egg.py 只包含一种方法:
def spam():
print("spam")
从 bar.py,我可以导入 egg.py,如下所示:
import egg
egg.spam()
它工作正常,除了 Pycharm 将 import egg
中的“egg”下划线作为错误
没有名为 egg less 的模块... (Ctrl+F1) 检查信息:此检查检测应该解析但不解析的名称。由于动态调度和鸭子类型,这在有限但有用的情况下是可能的。顶级和类级别的项目比实例项目得到更好的支持。
不过,这个“错误”并没有阻止它正确执行 egg.spam。
这是 Pycharm 的问题吗?如果不是,那么正确的方法是什么?
作为旁注,如果我尝试从 foo 而不是egg导入,Pycharm 不会发现任何错误,但我怀疑它是将模块 foo.py 与包 foo 混淆了。
我也尝试将主目录标记为“Sources Root”,但没有帮助:要求
import foo.egg
在 bar.py 中引发:
<块引用>ModuleNotFoundError: 没有名为“foo.egg”的模块; 'foo' 不是包
为了更加清楚,我在这里没有做任何花哨的事情:我只是选择 bar.py,右键单击它并选择“运行”。我希望这适用于任何模块,而不必在每次运行不同模块时更改设置。