首页 > 解决方案 > 在新包中导入 python 子包

问题描述

可能这是一个平庸的问题,我热切希望它是这样,但我已经坚持了太多天没有尝试寻求帮助。

StackOverflow 中也有类似的问题,例如Python 子包导入Python:导入子包或子模块。不过,这些问题与导入包中实际存在的子包(及其内容)有关。

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

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

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

// Content of the init file
import package1
import package2

__all__ = [
   "package1",
   "package2"
]

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

from package3 import package1
from package3 import package2

有用。

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

from package3.package1 import content_of_package1

因为它引发以下错误:

ModuleNotFoundError: No module named 'package3.package1'

但是如果我运行以下它可以工作:

import package3
import package1
assert dir(package1) == dit(package3.package1)

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

谢谢你。

标签: pythonpackage

解决方案


推荐阅读