【发布时间】: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添加需求的方法:
-
通过运行这个命令(以 twilio 为例):
docker-compose run --rm django bash -c "pip install twilio && pip freeze > requirements.txt" -
通过访问 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文件。