如何使用“pip-tools”中的“pip-compile”从“setup.cfg”文件的“extras_require”部分创建“dev_requirements.txt”?

Cor*_*yer 4 python pip setuptools pip-tools

我使用pip-tools来管理我的依赖项和环境,它完美地requirements.txt为我的包生成一个文件,其中包含setup.py如下所示的文件:

#! /usr/bin/env python
import os
from setuptools import setup


if "CI_COMMIT_TAG" in os.environ:
    VERSION = os.environ["CI_COMMIT_TAG"]
else:
    VERSION = "0.0.0"

setup(version=VERSION)
Run Code Online (Sandbox Code Playgroud)

setup.cfg这样的:

...
[options]
python_requires = >=3.7
zip_safe = False
packages = find:
include_package_data = True
install_requires =
    PyYAML
    Cython
    numpy==1.17.5
    pandas==0.25.3
    ...
package_dir=
    foo=bar

[options.extras_require]
testing =
    tox>=3.1.2
    pytest>=3.4.0
coverage =
    coverage
    pytest-cov>=2.5.1
other =
    anybadge
...
Run Code Online (Sandbox Code Playgroud)

运行$ pip-compile --index-url https://foo@bar@gitlab.my.host/api/v4/projects/236/packages/pypi/simple --no-header --allow-unsafe 产生我的包要求:

...
async-timeout==3.0.1
    # via aiohttp
attrs==21.2.0
    # via aiohttp
bcrypt==3.2.0
...
Run Code Online (Sandbox Code Playgroud)

install_requires但这仅包括我的文件部分中的所有包setup.cfg,而不包括extras_require. 它应该与此处dev_requirements.in描述的文件一起使用,但我宁愿只使用一个配置文件。

如何使用文件的dev_requirements.txtextras_require部分创建单独的文件,而无需创建文件?setup.cfgpip-compiledev_requirements.in

提前致谢!

Cor*_*yer 7

经过一段时间的挖掘,我在另一个问题中找到了答案:

$ pip-compile --extra testing --extra other