我正在尝试创建一个以ubutu 16.04为基础的docker镜像。我想安装一些python软件包,例如pandas,flask等。我将所有软件包保留在“ requirements.txt”中。但是当我尝试建立形象时,我得到了
Could not find a version that satisfies the requirement requests (from -r requirements.txt (line 1)) (from versions: )
No matching distribution found for requests (from -r requirements.txt (line 1))
基本上,我没有在“ requirements.txt”中提到任何版本。我猜应该使用该软件包的最新可用版本和兼容版本。但是对于每个包装,我都会遇到同样的问题。
我的DockerFile如下。
FROM ubuntu:16.04
RUN apt-get update -y && \
apt-get install -y python3-pip python3-dev build-essential cmake pkg-config libx11-dev libatlas-base-dev
# We copy just the requirements.txt first to leverage Docker cache
COPY ./requirements.txt /testing/requirements.txt
WORKDIR /testing
RUN pip3 install -r requirements.txt
和requirements.txt是
pandas
requests
PyMySQL
Flask
Flask-Cors
Pillow
face-recognition
Flask-SocketIO
我在哪里做错了?有人可以帮忙吗?
答案 0 :(得分:4)
我也遇到了同样的情况。我观察到,python软件包正在docker中寻找网络。认为它在没有网络的独立环境中运行,因此无法找到该软件包。在这种情况下
没有找到匹配的分布
有时
正在重试...
可能会发生错误。
我在如下所示的docker build命令中使用了-network 选项,以克服此错误,该命令坚持要求python使用主机网络下载所需的软件包。
docker build --network = host -t tracker:latest。
答案 1 :(得分:0)
尝试使用此:
运行python3.6 -m pip install --upgrade pip \
&& python3.6 -m pip install -r requirements.txt
通过这种方式使用它,您可以指定要在其中搜索这些软件包的python版本。
如果要使用3.7版本,请将其更改为python3.7。
答案 2 :(得分:0)
我建议使用官方的python
图片。结果,您的Dockerfile现在将变为:
FROM python:3
WORKDIR /testing
COPY ./requirements.txt /testing/requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
... etc ...
现在重新:角度/节点。您可以从此处获得两个选择:1)在Python映像上安装Angular / Node;或2)使用Docker的multi-stage build feature,以便在将它们合并在一起之前先构建Angular和Python特定的图像。建议使用选项2,但需要一些工作。可能看起来像这样:
FROM node:8 as node
# Angular-specific build
FROM python:3 as python
# Python-specific build
# Then copy your data from the Angular image to the Python one:
COPY --from=node /usr/src/app/dist/angular-docker /usr/src/app