从Python 3.6升级到3.7(Windows)后,如何正确地升级所有已安装在前一个版本中使用Pip安装的软件包?此操作不使用virtualenv或pipenv。
pip list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U
pip3.6 list --user --format=freeze | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip3.7 install --user --upgrade
pip3.6
将列出安装在Python 3.6上的软件包,而pip3.7将从该列表中安装Python 3.7的软件包。如果您没有用户软件包,请省略--user
标志(两次)。pip install -U $(pip list -o freeze | cut -f1 -d=)
pip install --upgrade $(pip list --outdated --format freeze | cut --fields=1 --delimiter="=")
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)
Long version:
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 ...
pip freeze > old_reqs.txt
,然后在Python3.7中运行pip install -r old_reqs.txt --upgrade
。 - Wiggy A.