【问题标题】:With pip, should I create requirements.txt from pip freeze, or by manually editing the requirements.txt file?使用 pip,我应该从 pip freeze 创建 requirements.txt,还是手动编辑 requirements.txt 文件?
【发布时间】:2022-01-12 21:48:54
【问题描述】:

对于上下文,我对 Python 了解不多,更不用说惯用的 Python。我正在做一个棕地项目。我所说的关于 docker 的一切可能与我要问的问题无关,但我不能说:我们的代码在 Docker 容器中运行。我们不使用虚拟环境,而是硬编码 Python 版本并在 Dockerfile 中运行:

ADD requirements.txt /
RUN pip install -r /requirements.txt \
&& rm -rf /requirements.txt 

目前,我们有两种向requirements.txt添加需求的方法:

  1. 通过运行这个命令(以 twilio 为例):

    docker-compose run --rm django bash -c "pip install twilio && pip freeze > requirements.txt"
    
  2. 通过访问 pypi.org,找到依赖项的名称和当前版本,然后将该行手动添加到主机 requirements.txt

两者似乎都有效,但我的直觉告诉我,其中一个/两个都有潜在的缺点。每种选择的优缺点是什么,哪一种被认为是惯用的?如果这些都不被认为是惯用的,那么添加到requirements.txt 的正确方法是什么?

我一直在谷歌上搜索,但很多结果都值得怀疑,因为它们确实很旧。例如,pip 20.3.2020 添加了解析器功能,我不知道这对最佳实践有什么影响。

【问题讨论】:

  • 我对此没有答案,但是 pip freeze to requirements 给了我一些小的软件包安装问题并弄乱了它们的版本。所以,我会一直编辑 requirements.txt。
  • @TamilSelvan 你知道它为什么会给你这些问题吗?
  • @DanielKaplan 两者:stackoverflow.com/a/53935334/7976758
  • @phd 答案是在 pip 20.3.2020 之前写的
  • @DanielKaplan 好吧,还有什么?我写了那个答案,从那以后没有任何改变。我们仍然在工作中使用相同的 2 个requirements.txt 文件。

标签: python docker pip


【解决方案1】:

requirements.txt 文件表示为使您的应用程序正确运行必须安装的所有依赖项。

运行 pip freeze 会将所有实际安装的库(开发、其他项目、已弃用等)转储到新创建的 requirements.txt 文件中。

手动添加依赖项是一种更可控的方式来列出您的依赖项。

我建议您在构建项目时手动将依赖项添加到文件中。如果您发现有些不需要,请将它们删除。使用pip freeze,也许其他二级库会保留。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    • 2018-06-22
    • 2017-12-30
    • 1970-01-01
    • 1970-01-01
    • 2018-06-19
    相关资源
    最近更新 更多