我已经阅读了无数有关python相对导入的讨论,我认为它如此混乱的原因之一是它将一个Python版本更改为另一个版本(我的版本是3.6)。但是这里的罪魁祸首似乎是PyCharm(除非我误会了..),我想知道是否有人遇到过此问题的解决方案。对于具有这种布局的项目:
/project
|-- __init__.py
|---subfolder
|-- __init__.py
|-- AA.py
|-- BB.py
Run Code Online (Sandbox Code Playgroud)
让我们想象一下,如果我编写此导入myfunc
文件,AA.py 在文件中包含一些功能BB.py:
from AA import myfunc
Run Code Online (Sandbox Code Playgroud)
那么Python的作品完美,但PyCharm认为这是一个错误:

因此,为了使PyCharm满意,我可以将y添加.到导入中,然后看似已解决了该错误:
from .AA import myfunc
Run Code Online (Sandbox Code Playgroud)
但后来python不高兴,给了我错误: ModuleNotFoundError: No module named '__main__.AA'; '__main__' is not a package
因此,总而言之,我使用的是实际有效的导入(即from AA import myfunc),但是如果我可以使PyCharm对此表示同意,那将是非常不错的,因为这样它就提供了诸如自动完成,定义等功能。
不是重复的: 我知道似乎这个主题已经被反复讨论了,但是它也有很多方面。在这里我谈论的是pycharm方面,因此据我所知这个主题是新的。
Pav*_*eev 12
马克subfolder在项目树源根与右击- >标记目录- >源根。PyCharm PYTHONPATH默认将所有源根添加到其中,因此该问题应得到解决
问题是PyCharm不知道您将BB.py直接执行,例如,假设您具有main.py的根目录from subfolder import BB。调用python main.py将引发ModuleNotFoundError: No module named 'AA'(确保使用Python 3以避免从Python 2隐式相对导入)。
希望有道理,我什么都没错过。
| 归档时间: |
|
| 查看次数: |
2685 次 |
| 最近记录: |