如何解决将模块从子模块导入库
我正在使用Python库(称为MyLibrary
),该库充当许多外部存储库的API。这些外部存储库中的大多数只是代码的集合,尚未作为库/程序包本身进行打包。让我们称这样一个外部存储库ExternalRepo
。我希望能够直接从ExternalRepo
导入函数,而不必复制或重写它们。
假设ExternalRepo
看起来像这样:
ExternalRepo
- some_functions.py
- main.py
- from some_functions import *
我希望能够从main.py
导入代码(它本身就是从some_functions.py
导入本地代码。
我认为可以做到的方式是将整个ExternalRepo
作为子模块添加到我的库中,并从ExternalRepo.main
导入代码。所以我的目录结构如下:
MyLibrary
- __init__.py
- api.py
- from .submodules.ExternalRepo.main import *
- submodules
- ExternalRepo
- some_functions.py
- main.py
- from some_functions import *
但这是行不通的,因为当我import MyLibrary.api
时,它找不到模块some_functions
,大概是因为它正在根文件夹(即MyLibrary.some_functions
)中寻找它而不是MyLibrary.submodules.ExternalRepo.some_functions
。我知道我可以通过用相对导入(即ExternalRepo.main
而不是from .some_functions import *
重写from some_functions import *
来纠正此问题。但这是我正在使用的实际外部存储库具有许多此类导入,并且具有更复杂的目录结构。我要么不得不分叉ExternalRepo
,进行那些更改,然后使其与原始同步,或者实质上是复制并重写ExternalRepo.main
及其所有依赖项,然后将所有这些直接放入{{1 }}。无论哪种选择都很难维护。
有什么办法可以解决这个问题?总的来说,是否存在编写依赖关系的Python库的最佳实践,这些依赖库的结构没有被构造成Python库本身(因此不能简单地通过pip安装)?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。