让Pycharm在子目录中查看包,而不将其添加为源根

时间:2018-05-31 11:45:18

标签: python python-3.x pycharm python-import

我们说我有一个结构项目

parent/
    one.py
    sub/
        two.py
        three.py

文件two.py

的位置
x = 42

three.py

from two import x

print(x)

three.py中的import语句将正常工作,因为这些文件位于同一目录中,但PyCharm会将导入标记为未解析的参考

Screenshot

解决这个问题的一种方法是让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

所以我怀疑这与我的项目配置有关,而相对导入工作则来自项目的顶级目录。我会尝试深入挖掘,但我仍然会感谢那些可能已经遇到过这个问题的人的答案。

0 个答案:

没有答案