首页 > 解决方案 > Pip3 在 docker build 期间无法安装 requirements.txt

问题描述

我正在使用 docker 教程(https://docs.docker.com/language/python/build-images/)来构建一个简单的 python 应用程序。使用freeze命令我制作了requirements.txt包含很多包的文件。

当我想构建 docker 映像时,我收到此错误:

第 4/6 步:运行 pip3 install -r requirements.txt ---> 在 f92acd21d271 中运行

错误:找不到满足要求 apt-clone==0.2.1 的版本(来自版本:无)

错误:没有为 apt-clone==0.2.1 找到匹配的分布

命令“/bin/sh -c pip3 install -r requirements.txt”返回非零代码:1

这是我的 dockerfile 内容(与教程中提到的相同):

# syntax=docker/dockerfile:1
FROM python:3.8-slim-buster
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip3 install -r requirements.txt
COPY . .
CMD [ "python3", "-m", "flask","run","--host=0.0.0.0" ]

它与 apt-clone==0.2.1 包无关。无论我尝试在 docker 映像中安装什么,它都会失败。我也尝试了 apt update 并在 dockerfile 中安装 pip3,但没有成功。

我错过了什么?

标签: pythondockerpipdockerfile

解决方案


apt-clone公共 PyPI 存储库中没有命名包,因此pip3显然找不到它。

如果你真的有一个像这样命名的 Python 包,它是从哪里来的?

  • 如果您在本地创建了一个具有此名称的包,您还需要以某种方式将其安装在您的 Docker 映像中。

  • 如果您在一个组织内部,也许您有一个本地 PyPI,其包与公共包不同,然后您需要配置pip3以使用它(尝试pip3 -i http://your.local.pypi/simple -r requirements.txt显然 URL 需要其他内容的地方,但我们无法猜测是什么) .

如果pip3 freeze说你有这个包裹,它一定来自某个地方,但我们不知道在哪里。您必须弄清楚这一点,或提供更多详细信息来帮助我们帮助您。

有一个名为的 Debian 软件包apt-clone,但显然不能pip安装。你真的是这个意思apt-get install -y apt-clone==0.2.1吗?(不过,我只能在 Debian Buster 中找到 0.4.1 版本。)

... @atline 的回答解释了发生的事情(您可能应该接受),但简单的解决方法是手动填充requirements.txt您的实际需求。 pip3 freeze如果您在虚拟环境中,这是一个很好的简写,但它不是手动策划的requirements.txtsetup.py(或其现代替代品,目前从 移动setup.cfgpyproject.toml)的适当替代品。如果flask是您的应用程序需要的唯一包,只需放置pip3 install flask并且不要创建requirements.txt.


推荐阅读