[英]Python namespace packages
我下面这说明,从一个大的创建多个小(独立)Python2包- https://packaging.python.org/guides/packaging-namespace-packages/#pkg-resources-style-namespace-packages
现在我有多个具有这样结构的子(包): https : //github.com/pypa/sample-namespace-packages/tree/master/pkg_resources
我可以独立安装和使用它们,效果很好。 但是由于我在同一个命名空间下有12个软件包,所以我希望能够通过运行一个命令(例如pip install
)来安装它们。 例如。 一些将来的项目将全部需要它们,因此我更喜欢将它们作为(常规)整体(一个依赖项)来使用,但有时我只需要其中一个(这就是为什么要使用名称空间)。 所以我需要在我的命名空间的根目录中包含一些setup.py
文件,该文件包含install_requires
中的所有子包,或者什么? 我无法弄清楚如何像在任何常规项目结构中一样,将所有小软件包一次安装在根名称空间下(当我们不拆分它们并且根本不使用名称空间时),但是是否可以单独安装?
这听起来像是一个如何正确管理依赖项的普遍问题,这与您的共享名称空间功能无关。 对于您的特殊问题,我建议以下内容:
install_requires
仅用于绝对必要的依赖项(需要存在的依赖项或无法执行程序的依赖项),因此它不适合您的情况。
最好使用extras_require
指令 ,该指令允许您在某些情况下指定其他依赖关系。 常见的额外功能包括dev
–开发期间所需的软件包–或doc
–构建文档所需的软件包。
假设位于同一名称空间下的软件包分别称为nsp1,nsp2和nsp3,则可以在setup.py
中的任何软件包中指定:
setup(
name="Project-A",
...
extras_require={
'all': ["nsp1", "nsp2", "nsp3"],
'set1': ["nsp1", "nsp2"],
}
)
之后,您可以使用pip3 install nsp1[all]
(假设您已经扩展了nsp1的setup.py
)或pip3 install .[all]
进行本地安装。
如果您的“将来的某些项目”中的任何一个都需要这些依赖项,则可以将这些额外功能添加到其依赖项中,例如在setup.py
:
install_requires=['nsp1[all]', …]
一种替代方法是使用requirement.txt
:
nsp1
nsp2
nsp3
并使用pip install -rrequirement.txt
安装它们
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.