我正在尝试创建一个包,并且我有一个像这样的树结构:
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()
最佳答案
首先,您仍然可以使用绝对导入,仅使用from … import
形式:
from dionesus import dionesus
d = dionesus.Dionesus()
如果您需要在同一模块中同时导入dionesus和dionesus.dionesus,这显然是有问题的,但这在为他们两个都赋予相同的未歧义名称的愿望中隐含了很多……
或者,如果您在dionesus.dionesus的父母,兄弟姐妹或其他亲戚中,则可以使用相对导入。根据您所在的位置,它会有所不同(毕竟,这是相对的意思);您可能是从
.
,.dionesus
,..
等导入的。但是无论在哪里,它都是与上述相同的from … import
形式,只是相对名称而不是绝对名称。 (实际上,相对导入始终使用from
形式。)from . import dionesus
d = dionesus.Dionesus()