从Python 3.6升级到3.7(Windows)之后,升级以前版本中随Pip安装的所有现有软件包的正确方法是什么?这不是使用virtualenv或pipenv。
答案 0 :(得分:1)
您可以尝试使用以下脚本来升级所有已安装的软件包。
pip list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U
答案 1 :(得分:0)
您可以直接升级所有过时的软件包:
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包,并将输出格式设置为“冻结”;
-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 ...
发生这种情况是因为结果中列出的版本已经安装。
要升级到最新版本,您需要不带版本的软件包名称或带有要升级的版本号的名称。
答案 2 :(得分:0)
我使用了upgrading all pip packages without Python upgrade的一种变体,使用了两个不同版本的pip(以及用于我的用户软件包):
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
标志(两次)。