【问题标题】:How to read top-level requirements (as from requirements.in) from setup.py and write back pinned requirements (as in requirements.txt)?如何从 setup.py 中读取顶级需求(如 requirements.in)并写回固定需求(如 requirements.txt)?
【发布时间】:2023-02-07 00:24:03
【问题描述】:

我有一个带有 setup.py 文件的包,我想使用 pip-tools 来固定我的生产依赖项。

假设我的setup.py 如下所示:

#!/usr/bin/env python
import pathlib
from setuptools import setup, find_packages

setup(
    author="Foo",
    description="My package",
    install_requires=["package1==1.0", "package2==2.0"],
    extras_require={
        "top_level": ["package1", "package2"],
    },
    version="0.1.0",
)

我如何在 setup.py 中跟踪我的顶级需求并将它们写回 install_requires 部分中的同一文件?我是否可以将 pip-compilesetup.py 转换为 requirements.txt 并将此文件中的内容读入 install_requires

【问题讨论】:

    标签: python pip-tools


    【解决方案1】:

    您最好根本不使用 setup.py 文件,因为正如您显然已经发现的那样,将锁定的需求放回那里有点麻烦,更不用说这些更现代的系统了天比运行任意代码来设置一个包。

    相反,我建议(在撰写本文时)使用Hatchhatch-requirements-txt。 (您可以使用 hatch new --initsetup.py 项目转换为 Hatch。)

    然后你可以做类似的事情(未经测试,只是一个想法)

    python -c 'import tomllib, pathlib; print(*tomllib.loads(pathlib.Path("pyproject.toml").read_text())["project"]["optional-dependencies"]["toplevel"], sep="
    ")' | pip-compile -
    

    从 TOML 文件中的可选依赖项生成 requirements.txt

    【讨论】:

      猜你喜欢
      • 2020-01-22
      • 2023-03-29
      • 2020-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多