Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将子模块中的模块导入库_Python_Pip_Git Submodules - Fatal编程技术网

Python 将子模块中的模块导入库

Python 将子模块中的模块导入库,python,pip,git-submodules,Python,Pip,Git Submodules,我正在开发一个Python库(称之为MyLibrary),它充当许多外部存储库的API。这些外部存储库中的大多数只是代码的集合,它们本身并没有打包为库/包。让我们调用这样一个外部存储库ExternalRepo。我希望能够直接从ExternalRepo导入函数,而无需复制或重写它们 假设ExternalRepo如下所示: ExternalRepo - some_functions.py - main.py - from some_functions import * MyLibrary

我正在开发一个Python库(称之为
MyLibrary
),它充当许多外部存储库的API。这些外部存储库中的大多数只是代码的集合,它们本身并没有打包为库/包。让我们调用这样一个外部存储库
ExternalRepo
。我希望能够直接从
ExternalRepo
导入函数,而无需复制或重写它们

假设
ExternalRepo
如下所示:

ExternalRepo
 - some_functions.py
 - main.py
   - from some_functions import *
MyLibrary
 - __init__.py
 - api.py
   - from .submodules.ExternalRepo.main import *
 - submodules
   - ExternalRepo
     - some_functions.py
     - main.py
       - from some_functions import *
我希望能够从
main.py
导入代码(这本身就是从
some_functions.py
导入本地代码)

我认为可以这样做的方法是将整个
ExternalRepo
作为子模块添加到我的库中,并从
ExternalRepo.main
导入代码。因此,我的目录结构如下所示:

ExternalRepo
 - some_functions.py
 - main.py
   - from some_functions import *
MyLibrary
 - __init__.py
 - api.py
   - from .submodules.ExternalRepo.main import *
 - submodules
   - ExternalRepo
     - some_functions.py
     - main.py
       - from some_functions import *
但这不起作用,因为当我导入MyLibrary.api时,它找不到模块
某些函数
,可能是因为它正在根文件夹中查找它,即
MyLibrary.some函数
,而不是
MyLibrary.submodules.ExternalRepo.some函数
。我知道我可以通过重写来纠正这个问题使用相对导入的ng
ExternalRepo.main
,即
from。有些函数导入*
,而不是
从某些函数导入*
。但问题是,我使用的实际外部存储库有许多这样的导入,并且有更复杂的目录结构。我要么使用fork
ExternalRepo
,进行这些更改,然后使其与原始文件保持同步,或者基本上复制并重写
ExternalRepo.main
及其所有依赖项,并将所有这些直接放入
api.py
。这两个选项都很难维护


有什么办法可以解决这个问题吗?一般来说,对于编写依赖项本身不是python库结构的python库(因此不能简单地安装pip)有没有最佳实践?

\uuuu init\uuuuuuuuuuuupy
添加到
子模块和
外部repo