提问人:tryingtosolve 提问时间:10/6/2018 更新时间:12/15/2021 访问量:552
如何处理将用作另一个包的依赖项的命名空间包
How do I handle namespace packages that will serve as dependencies for another package
问:
我已经编写了三个 Python 模块,其中两个是独立的,但最后一个将取决于两个独立的模块。例如,请考虑以下结构
myProject/
subpackage_a/
__init__.py
...
subpackage_b/
__init__.py
...
mainpackage/
__init__.py
...
mainpackage
依赖于 和 ,其中 as 和 可以独立使用。换言之,在 中,有对 和 的引用。简而言之,我希望用户能够在不调用 .我还希望用户使用并开始使用 ,其中将调用 s 中的函数。subpackage_a
subpackage_b
subpackage_a
subpackage_b
mainpackage
subpackage_a
subpackage_b
from myProject import subpackage_a
subpackage_a.subfunction(args)
mainpackage
from myProject import mainpackage
mainpackage.mainfucntion(args)
mainpackage.mainfucntion
subpackage
我了解了命名空间打包。但是,我在涉及依赖项的命名空间包上找不到任何内容。如果有更好的解决方案,我不必使用命名空间打包。我能得到一些关于我应该寻找什么的建议吗?
答:
0赞
korommatyi
12/15/2021
#1
无论如何,您都需要在相应的包中指定一个名称,并且在定义依赖项时只需使用这些名称即可。下面是一个稍微简化的示例,只有一个子包:setup.py
myProject
sub/
setup.py
myProject/
sub/
__init__.py
main/
setup.py
myProject/
main/
__init__.py
您的设置文件应如下所示:
myProject/sub/setup.py
from setuptools import setup, find_namespace_packages
setup(
name="my-project-sub",
...
packages=find_namespace_packages(include=["myProject.*"]),
)
myProject/main/setup.py
from setuptools import setup, find_namespace_packages
setup(
name="my-project-main",
...
packages=find_namespace_packages(include=["myProject.*"]),
install_requires=["my-project-sub"],
)
评论
1赞
Will Udstrand
7/19/2022
有没有办法让它在安装软件包时自行安装所需的子包?当我尝试先安装主包时,我得到了一个。main
ERROR: No matching distribution found for my-project-sub
0赞
korommatyi
5/26/2023
这会有帮助吗?stackoverflow.com/a/65902365/4350939
下一个:集会。。。内部和外部命名空间
评论
subpackage_a
subpackage_b