从顶级包的相对导入

时间:2019-02-13 13:19:29

标签: python python-import

我有这个结构

proj
 utils.py
    |- sub1
        file1.py
    |- sub2
        file2.py
 ...

utils.py是一个包含许多有用功能的模块。我希望可以在子目录的每个filesX.py中访问它们,例如通过utils.func1() ...

因此我想通过utilsfile1.py导入from .. import utils,但是我得到了

ValueError: attempted relative import beyond top-level package

错误。

是否有一种不添加绝对路径且无需编辑PYTHONPATH的干净方法?

1 个答案:

答案 0 :(得分:0)

尝试一下:

from proj import utils

我的意见是,如果您不想编辑eny环境变量,这就是解决此问题的方法。

使用绝对导入意味着您尝试导入另一个模块时,模块在项目中的哪个位置都没有关系。 Python将始终查找要从包根目录导入的模块。