我正在尝试创建一个包,并且我有一个像这样的树结构:

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()

10-08 18:14