我们说我有一个结构项目
parent/
one.py
sub/
two.py
three.py
文件two.py
x = 42
three.py
:
from two import x
print(x)
three.py
中的import语句将正常工作,因为这些文件位于同一目录中,但PyCharm会将导入标记为未解析的参考:
解决这个问题的一种方法是让PyCharm将目录sub
标记为源根目录。但是,sub
中的文件将对项目中的所有其他文件可见,例如在one.py
。但我想避免这种情况。
另一种方法是将导入编写为import sub.two
。我现在在我的项目中做的。但由于我有一个深层文件夹结构,这是非常烦人的。
还有其他办法吗?
UPD: 将import语句更改为
from .two import x
会导致错误
ModuleNotFoundError: No module named '__main__.two'; '__main__' is not a package
我还观察到,如果我尝试从父目录使用相对导入,例如
from ..one import y
我正在
ValueError: attempted relative import beyond top-level package
所以我怀疑这与我的项目配置有关,而相对导入工作则来自项目的顶级目录。我会尝试深入挖掘,但我仍然会感谢那些可能已经遇到过这个问题的人的答案。