在新包中导入python子包

Luc*_*tti 6 python package

可能这是一个平庸的问题,我热切地希望如此,但我已经被困在这个问题上太多天了,没有尝试寻求帮助。

\n

StackOverflow 中也有类似的问题,例如Python 子包导入Python: importing a sub\xe2\x80\x91package or sub\xe2\x80\x91module。不过,这些问题与导入实际存在于包中的子包(及其内容)有关。

\n

我开发了一些软件包,我们称它们为package1package2。这些包本身就有意义,具有非常复杂的依赖关系,并且需要编译某些部分,但是一旦它们出现在 Pipy 上,最终用户就消除了这种复杂性。

\n

我现在正在开发第三个包,package3它旨在合并package1package2添加一些额外的功能。我希望用户从和package1导入功能。package2package3

\n

剥离package3到骨架后,我们可以将其缩减为单个__init__文件,如下所示:

\n
// Content of the init file\nimport package1\nimport package2\n\n__all__ = [\n   "package1",\n   "package2"\n]\n
Run Code Online (Sandbox Code Playgroud)\n

现在,在脚本中,我执行以下操作:

\n
from package3 import package1\nfrom package3 import package2\n
Run Code Online (Sandbox Code Playgroud)\n

有用。

\n

但是,执行以下命令不起作用:

\n
from package3.package1 import content_of_package1\n
Run Code Online (Sandbox Code Playgroud)\n

因为它会引发以下错误:

\n
ModuleNotFoundError: No module named \'package3.package1\'\n
Run Code Online (Sandbox Code Playgroud)\n

但如果我运行以下命令,它就会起作用:

\n
import package3\nimport package1\nassert dir(package1) == dit(package3.package1)\n
Run Code Online (Sandbox Code Playgroud)\n

我不知道接下来要做什么,除非我只是镜像整个package1package2结构package3。有解决ModuleNotFoundError错误的建议吗?

\n

谢谢。

\n