Гипотеза: в pip install --upgrade pip
команда pip
запускается /usr/bin/pip
, а при обновлении pip
она создает новый исполняемый файл pip
в /usr/local/bin/pip
.Этот новый исполняемый файл - это то, что должен запускать pip install -r requirements.txt
, но когда вы помещаете их в одну команду RUN
и, таким образом, запускаете их в одном экземпляре оболочки, кэширование оболочки командных мест запускается, и, таким образом, вторая pip
в pip ... && pip ...
запускается из того же места, что и первый, что не удается из-за изменений внутренних компонентов pip между старой и новой версией.Вы можете заставить оболочку разархивировать местоположение pip
, вставив hash -d pip
в середине одной команды RUN
:
RUN pip install --upgrade pip && \
hash -d pip && \
pip install -r requirements.txt