如何正确管理 Python 应用程序依赖项?

问题描述 投票:0回答:0

问题

我有一个 Python 应用程序(不是库),我想将其发布为

pip
可安装包。为了使应用程序现在、一个月或 2 年内使用
pip install
可预测地安装和运行,我想固定所有依赖项,例如使用
pip-tools

当前工作流程

目前我的包裹有3个文件:

  • requirements.in
    :列出直接的应用程序依赖项。没有或松散的版本固定。
    pip-compile
    .
  • 的源文件
  • requirements.txt
    :所有依赖项的完整锁文件(也是可传递的)
    pip-compile
    requirements.in
    生成。
    requirements.txt
    文件不是 Python wheel 的一部分,所以
    pip install
    不能使用它。
  • setup.py
    :在
    install_requires
    中,我阅读了已编译的
    requirements.txt
    ,以便完整的、固定的依赖项在
    pip install
    的轮子元数据中找到它们的方式。 (例子见下)
# setup.py
setup(
  ...
  # pseudocode
  "install_requires": pip.parse(Path(".")/"requirements.txt")
  ...
)

问题

  • 应该怎么做还是有更好的方法?
  • 什么被认为是 Python 应用程序部门的最佳实践。管理?固定所有部门。在 setup.py 中,也是可传递的?或者只是直接的(相信他们会固定/锁定他们的部门。)
  • requirements.txt
    中动态读取的方法如何转化为带有
    pyproject.toml
    的现代声明式方法?或者不是,而不是自动化,我需要在
    requirements.txt
    依赖项部分手动复制编译的
    pyproject.toml
    内容?
python pip dependency-management setup.py pyproject.toml
© www.soinside.com 2019 - 2024. All rights reserved.