Python setup.py 中的否定 extra_requires

Negative extra_requires in Python setup.py

我想制作一个 Python 包,默认情况下安装依赖项,除非用户特别表示他们不想要那个。

示例:

 pip install package[no-django]

当前的 pip 和 setup.py 机制是否提供了执行此操作的方法,或者不需要每次都明确 extra_requires

我认为这是不可能的。解决它的方法是做一个正常的额外要求...... where

install_require=[
    # ...
    # no django listed here
],
extras_require={
    'django': ['django'],
}

并在需要安装 django 的任何地方使用 package[django] 安装。

这是一个可能的解决方案。它不使用 extras_require,但除此之外它满足所有规定的要求。使用下面的 setup.py 文件,您可以按如下方式安装:

# Regular installation
pip install package

# Installation without django
NODJANGO=1
pip install package

setup.py 文件:

import os
from setuptools import setup

install_requires_without_django = [...]

setup(
    ...
    install_requires=install_requires_without_django  + ([] if os.getenv('NODJANGO', False) else ['django']),,
    ...
)