当我在处理需求文件的同时运行docker build时遇到此错误。
ERROR: Could not find a version that satisfies the requirement mkl-fft==1.0.6 (from -r /requirements.txt (line 44)) (from versions: none)
ERROR: No matching distribution found for mkl-fft==1.0.6 (from -r /requirements.txt (line 44))
The command '/bin/sh -c pip install -r /requirements.txt' returned a non-zero code: 1
建议?
Dockerfile:
FROM python:3.6-alpine
MAINTAINER My Project
ENV PYTHONUNBUFFERED 1
COPY ./requirements.txt /requirements.txt
RUN pip install -r /requirements.txt
RUN mkdir /app
WORKDIR /app
COPY . /app
RUN adduser -D user
USER user
requirements.txt:
asgiref==3.2.10
certifi==2020.6.20
cffi==1.14.0
chardet==3.0.4
click==7.1.2
cymem==2.0.3
cytoolz==0.9.0.1
dill==0.2.9
Django==3.0.7
djangorestframework==3.11.0
en-core-web-sm @ https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.0.0/en_core_web_sm-2.0.0.tar.gz
gunicorn==20.0.4
idna==2.10
intervaltree==3.0.2
joblib==0.15.1
msgpack==0.6.1
msgpack-numpy==0.4.3.2
murmurhash==1.0.2
nltk==3.5
numpy==1.15.4
plac==0.9.6
preshed==2.0.1
pycparser==2.20
pyOpenSSL==19.1.0
pyreadline==2.1
PySocks==1.7.1
python-dateutil==2.8.1
pytz==2020.1
regex==2020.6.8
requests==2.24.0
six==1.15.0
sortedcontainers==2.2.2
spacy==2.0.16
SQLAlchemy==1.3.18
sqlparse==0.3.1
thinc==6.12.1
toolz==0.10.0
tqdm==4.47.0
ujson==3.0.0
urllib3==1.25.9
win-inet-pton==1.1.0
wincertstore==0.2
wrapt==1.10.11
mkl-fft==1.0.6
mkl-random==1.0.1
brotlipy==0.7.0
cryptography==2.9.2
pandas==1.0.5
psycopg2==2.8.4
TBB==0.1
在https://stackoverflow.com/users/5666087/jakub的帮助下,我已将Dockerfile更改为使用映像FROM continuumio/miniconda3:4.8.2
我已将需求文件更改为:
asgiref==3.2.10
certifi==2020.6.20
cffi==1.14.0
chardet==3.0.4
click==7.1.2
cymem==2.0.3
cytoolz==0.9.0.1
dill==0.2.9
Django==3.0.7
djangorestframework==3.11.0
en-core-web-sm @ https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.0.0/en_core_web_sm-2.0.0.tar.gz
gunicorn==20.0.4
idna==2.10
intervaltree==3.0.2
joblib==0.15.1
msgpack==0.6.1
msgpack-numpy==0.4.3.2
murmurhash==1.0.2
nltk==3.5
numpy==1.15.4
plac==0.9.6
preshed==2.0.1
pycparser==2.20
pyOpenSSL==19.1.0
pyreadline==2.1
PySocks==1.7.1
python-dateutil==2.8.1
pytz==2020.1
regex==2020.6.8
requests==2.24.0
six==1.15.0
sortedcontainers==2.2.2
spacy==2.0.16
SQLAlchemy==1.3.18
sqlparse==0.3.1
thinc==6.12.1
toolz==0.10.0
tqdm==4.47.0
ujson==3.0.0
urllib3==1.25.9
win-inet-pton==1.1.0
wincertstore==0.2
wrapt==1.10.11
brotlipy==0.7.0
cryptography==2.9.2
pandas==1.0.5
tbb
psycopg2-binary==2.8.5
mkl-fft
mkl-random
我留下了错误:
ERROR: Could not find a version that satisfies the requirement mkl-fft (from -r /requirements.txt (line 49)) (from versions: none)
ERROR: No matching distribution found for mkl-fft (from -r /requirements.txt (line 49))
The command '/bin/sh -c pip install -r /requirements.txt' returned a non-zero code: 1
答案 0 :(得分:1)
错误
ERROR: Could not find a version that satisfies the requirement mkl-fft==1.0.6 (from -r /requirements.txt (line 44)) (from versions: none)
ERROR: No matching distribution found for mkl-fft==1.0.6 (from -r /requirements.txt (line 44))
The command '/bin/sh -c pip install -r /requirements.txt' returned a non-zero code: 1
之所以发生,是因为您在尝试安装许多Linux轮文件(它们是glibc)时使用了基于Alpine的映像(使用MUSL而不是glibc)(请参见https://github.com/docker-library/docs/issues/904)。解决此问题的一种简单方法是使用基于Debian的python:3.6-slim
。
但是,requests.txt文件中还有其他问题。您将必须安装编译器(例如gcc)才能安装cytoolz和其他一些软件包。
如果您不想编译软件包,则可以查看miniconda3
码头工人镜像(https://hub.docker.com/r/continuumio/miniconda3)。那个程序包管理器附带了预编译的程序包。
答案 1 :(得分:0)
这是因为最新的 The idea behind this change is to reduce global static IP usage and to encourage users to use private VM instances (without static external IP) and expose them to the outside via Cloud NAT, thus reducing the attack surface.
库与 mkl-fft
您的 Python 版本不兼容。
将版本保留在 requirements.txt 中,因此 python:3.6-alpine
。
以更一般的方式,对于任何其他库: 你有两个选择。
mkl-fft==1.0.6
的另一个版本的库。