#python #docker #installation #pip #requirements.txt
Вопрос:
Я создаю образ Докера с помощью requirements.txt файл. Каждый раз, когда я создаю образ, он продолжает отказывать из-за отсутствия какой-либо версии пакета. Например
ARG BASE_CONTAINER=tensorflow/tensorflow
FROM $BASE_CONTAINER
# 2) change to root to install packages
USER root
COPY requirements.txt requirements.txt
# 3) install packages
RUN pip install -r requirements.txt
ERROR: Could not find a version that satisfies the requirement msrestazure==0.5.4
(from -r requirements.txt (line 66)) (from versions: 0.0.1, 0.0.2, 0.1.0, 0.1.1, 0.1.2,
0.2.0, 0.2.1, 0.3.0, 0.4.0rc1, 0.4.0, 0.4.1, 0.4.2, 0.4.3, 0.4.4, 0.4.5, 0.4.6, 0.4.7,
0.4.8, 0.4.9, 0.4.10, 0.4.11, 0.4.12, 0.4.13, 0.4.14, 0.4.15, 0.4.16, 0.4.17, 0.4.18,
0.4.19, 0.4.20, 0.4.21, 0.4.22, 0.4.23, 0.4.24, 0.4.25, 0.4.26, 0.4.27, 0.4.28, 0.4.29,
0.4.30, 0.4.31, 0.4.32, 0.4.33, 0.4.34, 0.5.0, 0.5.1, 0.6.0, 0.6.1, 0.6.2, 0.6.3, 0.6.4)
#6 9.178 ERROR: No matching distribution found for msrestazure==0.5.4 (from -r requirements.txt (line 66))
Чтобы обойти это, я просто изменил версию пакета в своем requirements.txt до самой последней версии, которую может найти докер. Мне было интересно, есть ли способ сделать это программно. Например, есть ли какой-то флаг или опция, которую я могу использовать для автоматической установки последней версии пакета, которую docker может найти, если версия, которая у меня есть в моем requirements.txt файл не существует/не может быть найден?
Ответ №1:
Отсутствие указания какой-либо версии вообще в a requirements.txt
приведет к использованию самой последней версии, при условии, что она не конфликтует.
В вашем случае я бы предложил запустить docker run -it tensorflow/tensorflow
интерактивную оболочку в среде, а затем установить все ваши пакеты без указанной версии. Проверьте, работает ли это, и если да, запустите pip freeze > requirements.txt
, чтобы создать новый файл требований, который работает в этой среде, чтобы ваши требования были стабильными.
Вам также придется закрепить tensorflow/tensorflow
изображение, так как, если вы используете latest
его так, как делаете сейчас, вы не можете быть уверены, что ваши требования будут доступны в будущем.
Обязательно скопируйте requirements.txt
файл перед выходом из контейнера.
Комментарии:
1. О, вы совершенно правы, я совершенно забыл о том, чтобы просто оставить версию