Python相对导入和包

时间:2014-12-02 00:03:39

标签: python import packages

我试图创建一个包,我有一个如下所示的树结构:

dionesus/
  setup.py
  dionesus/
    __init__.py
    dionesus.py

Dionesus.py有一个名为Dionesus的课程。 init .py为空。

如何在不指定顶级文件夹的情况下导入Dionesus类?

我必须这样做:

import dionesus
d = dionesus.dionesus.Dionesus()

我想将导入语句看起来像:

import dionesus
d = dionesus.Dionesus()

1 个答案:

答案 0 :(得分:3)

首先,您仍然可以使用绝对导入,只需使用from … import表单:

from dionesus import dionesus
d = dionesus.Dionesus()

如果你需要在同一个模块中导入dionesus和dionesus.dionesus,这显然会有问题,但是他们希望给他们两个相同的非消除歧义的名字......

或者,如果您是dionesus.dionesus的父母或兄弟姐妹或其他亲戚,您可以使用相对导入。根据你所处的位置,它会有所不同(毕竟,相对意味着什么);您可能正在从..dionesus..等处导入。但无论它在哪里,它都与上面的from … import形式相同,只是与亲戚一起名称而不是绝对名称。 (事实上​​,相对导入总是使用from表单。)

from . import dionesus
d = dionesus.Dionesus()