我试图创建一个包,我有一个如下所示的树结构:
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()
答案 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()