ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python 如何更新所有包?

2022-04-07 11:32:38  阅读:198  来源: 互联网

标签:github Python review 所有 更新 -- https pip com


总结自Stackoverflow:How to upgrade all Python packages with pip

@

目录

方法一:pip命令

温馨提示:此命令仅适于Linux用户

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

命令很长,我们来分析一下其中的各个参数

pip list --outdated 可以列出过时的python包

pip list --format 用来指定输出格式,其中freeze格式,输出是类似这样的

attrs==21.2.0
Automat==20.2.0
blinker==1.4
certifi==2021.5.30
cffi==1.14.6
chardet==4.0.0
charset-normalizer==2.0.4
click==8.0.1
cloud-init==21.2
colorama==0.4.4
command-not-found==0.3

是不是有点像requirements.txt文件的内容?

后面就是Linux命令了,用grep 过滤掉-e开头的包,接着传给cut命令,切掉每行==后面的所有内容,输出是类似这样的

attrs
Automat
blinker
certifi
cffi
chardet
charset-normalizer
click
cloud-init
colorama
command-not-found

最后的xargs接收前面的输出,传给pip install -U执行,通过指定-n1参数,使得输出的每一行都作为参数执行一次pip install -U

方法二:pip-review

pip-review相当于一个简单包装过的pip。它可以像 pip list --outdated 一样列出可更新的包。还能像使用 pip install 命令一样自动或者交互式的安装可更新的包。

比如,如果只是想查看一下:

$ pip-review
requests==0.13.4 is available (you have 0.13.2)
redis==2.4.13 is available (you have 2.4.9)
rq==0.3.2 is available (you have 0.3.0)

或者,更新所有包:

$ pip-review --auto
... <pip install output>

再者,交互式的运行,在每个包更新之前,询问一下:

$ pip-review --interactive
requests==0.14.0 is available (you have 0.13.2)
Upgrade now? [Y]es, [N]o, [A]ll, [Q]uit y
...
redis==2.6.2 is available (you have 2.4.9)
Upgrade now? [Y]es, [N]o, [A]ll, [Q]uit n
rq==0.3.2 is available (you have 0.3.0)
Upgrade now? [Y]es, [N]o, [A]ll, [Q]uit y
...

运行 pip-review -h 可以查看完整的选项,或者去GitHUb:https://github.com/jgonggrijp/pip-review

注意:如果想固定特定的包以防止它们自动升级,可以搞一个约束文件(比如:requirements.txt

$ export PIP_CONSTRAINT="${HOME}/constraints.txt
$ cat $PIP_CONSTRAINT
pyarrow==0.14.1
pandas<0.24.0

$ pip-review --auto
...

方法三:pipupgrade

pipupgrade的功能和pip-review类似,不过它的命令行界面倒是挺炫酷的,比较符合我的审美哈。

查看所有可更新的包:

$ pipupgrade --check
Checking...
Source: Installed Distributions (/home/pineapple/.local/bin/pip)

Name            Current Version Latest Version Home Page                                
--------------- --------------- -------------- -----------------------------------------
decorator       4.4.2           5.0.9          https://github.com/micheles/decorator    
humanize        0.5.1           3.11.0         https://github.com/jmoiron/humanize      
pid             2.2.3           3.0.4          https://github.com/trbs/pid/             
pycairo         1.20.0          1.20.1         https://pycairo.readthedocs.io           
pyenchant       3.2.0           3.2.1          https://pyenchant.github.io/pyenchant/   
pykickstart     3.32            3.34           http://fedoraproject.org/wiki/pykickstart
python-augeas   0.5.0           1.1.0          http://augeas.net/                       
python-dateutil 2.8.1           2.8.2          https://github.com/dateutil/dateutil     
requests        2.25.1          2.26.0         https://requests.readthedocs.io          
setuptools      53.0.0          57.4.0         https://github.com/pypa/setuptools       
six             1.15.0          1.16.0         https://github.com/benjaminp/six         
slip            0.6.4           20191113       https://github.com/bicv/SLIP             
soupsieve       2.2             2.2.1          https://github.com/facelessuser/soupsieve
Tempita         0.5.1           0.5.2          http://pythonpaste.org/tempita/          
urllib3         1.25.10         1.26.6         https://urllib3.readthedocs.io/
......

很炫酷啊!

更新所有的包:

$ pipupgrade

交互式的更新:

$ pipupgrade --interactive

更多pipupgrade 选项可以用 pipupgrade -h 查看,或者去GitHub:https://github.com/achillesrasquinha/pipupgrade

标签:github,Python,review,所有,更新,--,https,pip,com
来源: https://www.cnblogs.com/james-wangx/p/16111449.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有