python - 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,但没有成功。
我错过了什么?
解决方案
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.txt
或setup.py
(或其现代替代品,目前从 移动setup.cfg
到pyproject.toml
)的适当替代品。如果flask
是您的应用程序需要的唯一包,只需放置pip3 install flask
并且不要创建requirements.txt
.
推荐阅读
- angular - 角度材质选择未正确绑定对象值
- asp.net - ASP.NET WebCustomControl 事件 OnClick()
- c++ - 在 C++ 中使用 new
- concurrency - Dart 中的 AtomicLong 等价物
- api - Onelogin API 认证错误
- java - 如何在 Java Stream 上应用多个过滤器?
- mysql - SQL 使用同一查询从同一组数据中获取多个结果计数
- javascript - 如何处理动态创建表单的 PHP 响应,使其显示在同一页面中?
- c# - Dapper/SQL Server - 从包含插入和选择语句的存储过程中获取输出
- url - Kentico 8 多语言前缀仅用于替代语言而不是根