问题描述
我整理了一个具有以下结构的库:
I've put together a library with the following structure:
filters/
__init__.py
core/
__init__.py
base.py
complex.py
number.py
string.py
extra/
__init__.py
django.py
iso.py
当开发人员执行 pip安装过滤器
时,应始终安装
filters.core
.
filters.core
should always be installed when a developer does a pip install filters
.
但是,我希望 filters.extra
是可选的.默认情况下不会安装.相反,开发人员需要执行 pip install filter [extra]
之类的操作,以便与核心一起安装额外的软件包.
However, I'd like filters.extra
to be optional. It would not be installed by default; instead, the developer would need to do something like pip install filters[extra]
in order to install the extra package along with the core.
是否可以使用setuptools来做到这一点?
Is it possible to do this using setuptools?
推荐答案
使用默认的setuptools工具是不可能的.您可以从以下两个选项中进行选择:
No this is not possible with the default means of setuptools. There are two options you can chose from:
- 用多余的东西创建第二个项目,例如
filters-extra
.这是许多项目完成的工作.看例如在在pypi上烧瓶. - 使用可选功能" 安装程序工具的机制.这将始终安装您的代码,但是只有在明确要求的情况下,才会安装您对其他功能的依赖性.
- Create a second project with the extra stuff, e.g.
filters-extra
. This is what is done by many projects. Look e.g. at flask on pypi. - Use the "optional features" mechanism of setuptools. This will always install your code, but dependencies of you additional feature will only be installed if requested explicitly.
如果这些附加功能确实与您的核心功能分离开了,或者在代码中也没有互连,那么我通常会选择选项1,因为它更直接地使用和编写文档.
In case the extras are really separated from your core functionality and nor interconnected in the code, I would usually go for option 1 as it is more straight forward to use and document.
这篇关于在setup.py中声明我包的可选组件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!