Вы можете обновить все устаревшие пакеты напрямую:
pip install -U $(pip list -o freeze | cut -f1 -d=)
Длинная версия:
pip install --upgrade $(pip list --outdated --format freeze | cut --fields=1 --delimiter="=")
Или вы можете создать и использовать файл для вывода списка всех устаревших имен пакетов pip:
list
все устаревшие pip-пакеты и отформатируйте вывод как "freeze";
-d=
обрежьте все после "=" (разделитель);
>
сбросьтерезультат в файл.
pip list -o freeze | cut -f1 -d= > pip_list_outdated.txt
Длинная версия:
pip list --outdated --format freeze | cut --fields=1 --delimiter="="> pip_list_outdated.txt
Вывод будет выглядеть примерно так:
gunicorn
PySimpleGUI
python-engineio
python-socketio
requests
setuptools
six
Обновление до последней версии устаревших пакетов pip с использованиемимя в каждой строке:
pip install -U $(<pip_list_outdated.txt)
Длинная версия:
pip install --upgrade $(<pip_list_outdated.txt)
Неправильный путь:
Если вы введете:
pip list -o freeze:
Вы получите что-то вроде:
autopep8==1.4.3
chardet==3.0.4
Django==2.1.4
И если вы попытаетесь обновить, используя этот результат:
pip install -U $(pip list -o freeze)
Вы получите сообщения:
Requirement already up-to-date: autopep8==1.4.3 in ...
Requirement already up-to-date: chardet==3.0.4 in ...
Requirement already up-to-date: Django==2.1.4 in ...
Это происходит потому, что указанная в результате версия уже установлена.
Для обновления до последней версии вам нужно имя пакета без версии или т.имя с номером версии, которую вы хотите обновить.