【问题标题】:Upgrading pip packages after python upgradepython升级后升级pip包
【发布时间】:2019-03-20 18:54:06
【问题描述】:

从 Python 3.6 升级到 3.7 (Windows) 后,升级之前版本中使用 Pip 安装的所有现有包的正确方法是什么?这不是使用 virtualenv 或 pipenv。

【问题讨论】:

标签: python pip upgrade


【解决方案1】:

我使用了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 标志(两次)。

【讨论】:

    【解决方案2】:

    您可以尝试以下脚本来升级所有已安装的软件包。

    pip list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1  | xargs -n1 pip install -U
    

    【讨论】:

    • Source。请注意,这只会升级当前 Python 版本的所有已安装包。如果你只是升级了 Python,那么就会有零个包。
    【解决方案3】:

    你可以直接升级所有过时的包:

    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 ...
    

    这是因为结果中列出的版本已经安装。

    要升级到最新版本,您需要不带版本的包名或带有要升级的版本号的名称。

    【讨论】:

      猜你喜欢
      • 2022-10-08
      • 2019-01-30
      • 2014-12-05
      • 1970-01-01
      • 2011-02-21
      • 2013-06-17
      • 2015-12-10
      • 2018-12-19
      • 2018-12-17
      相关资源
      最近更新 更多