python包管理工具piplist详解
pip list用于查看已安装的库,指定的选项不同输出的结果就不同,我们可以根据需要指定不同的选项。
这里我们主要讲述以下几个常用选项:--outdated、--uptodate、--local、--user、--path、--pre、--format、--not-required、--exclude。outdated
这个选项用于列出可以更新的安装包,可以让我们知道哪些安装包需要更新了,比如在我机器上执行以下命令:pip list --outdated
输出如下内容:Package Version Latest Type ---------- ------- ------ ----- aiohttp 3.6.2 3.8.1 wheel attrs 19.3.0 21.4.0 wheel chardet 3.0.4 4.0.0 wheel idna 2.9 3.3 wheel multidict 4.7.5 5.2.0 wheel setuptools 39.2.0 59.6.0 wheel yarl 1.4.2 1.7.2 wheel
输出信息的每一行指出了可以更新到的版本以及安装包类型。uptodate
这个选项列出了已是最新版本无需更新的安装包,比如在我的机器上执行以下命令:pip list --uptodate
输出如下内容:Package Version ------------------ ------- async-timeout 4.0.2 dataclasses 0.8 Deprecated 1.2.13 idna-ssl 1.1.0 importlib-metadata 4.8.3 itsdangerous 2.0.1 MarkupSafe 2.0.1 packaging 21.3 pip 21.3.1 pyparsing 3.0.7 redis 4.2.0 typing_extensions 4.1.1 Werkzeug 2.0.3 wrapt 1.14.0 zipp 3.6.0
这些安装包的版本都是最新且无需更新的。local
这个选项告诉pip如果我们是在virtualenv下且有权访问全局安装包时,不列出全局安装包,比如在我机器上执行以下命令:pip list --local
输出内容如下:Package Version ------------------ ------- click 8.0.4 dataclasses 0.8 Flask 2.0.3 importlib-metadata 4.8.3 itsdangerous 2.0.1 Jinja2 3.0.3 MarkupSafe 2.0.1 Pillow 8.4.0 pip 20.0.2 PyMySQL 1.0.2 setuptools 46.1.3 typing-extensions 4.1.1 Werkzeug 2.0.3 wheel 0.34.2 zipp 3.6.0
可见比前面不带local选项列出的少了一些。user
这个选项列出安装在user-site下的安装包,即执行pip install --user时安装的包,在我机器上执行以下命令:pip list --user
输出内容如下:Package Version ------------------ ------- async-timeout 4.0.2 dataclasses 0.8 Deprecated 1.2.13 importlib-metadata 4.8.3 itsdangerous 2.0.1 MarkupSafe 2.0.1 packaging 21.3 pyparsing 3.0.7 redis 4.2.0 typing_extensions 4.1.1 Werkzeug 2.0.3 wrapt 1.14.0 zipp 3.6.0
这些安装包都安装在我机器上的这个目录下:~/.local/lib/python3.6/site-packages。path
这个选项告诉pip只列出path指定目录下的安装包,比如在我机器上执行以下命令:pip list --path ~/.local/lib/python3.6/site-packages
输出内容与pip list --user是一样的。pre
默认情况下pip只列出稳定版本的包,通过指定这个选项就会同时列出预发布和开发中的版本,比如在我的机器上执行以下命令:pip list --outdated --pre
输出内容如下:Package Version Latest Type ---------- ------- ------- ----- aiohttp 3.6.2 4.0.0a1 wheel attrs 19.3.0 21.4.0 wheel chardet 3.0.4 4.0.0 wheel idna 2.9 3.3 wheel multidict 4.7.5 5.2.0 wheel setuptools 39.2.0 59.6.0 wheel yarl 1.4.2 1.7.2 wheel
可以看到aiohttp那一行包含了alpha版本:4.0.0a1format
这个选项指定输出格式,默认是列格式,这个选项有三个值可用,分别是:columns、freeze、json,比如执行以下命令:pip list --uptodate --format freeze
输出内容如下:async-timeout==4.0.2 dataclasses==0.8 Deprecated==1.2.13 idna-ssl==1.1.0 importlib-metadata==4.8.3 itsdangerous==2.0.1 MarkupSafe==2.0.1 packaging==21.3 pip==21.3.1 pyparsing==3.0.7 redis==4.2.0 typing_extensions==4.1.1 Werkzeug==2.0.3 wrapt==1.14.0 zipp==3.6.0not-required
这个选项告诉pip只列出不被其它安装包依赖的安装包,比如在我机器上执行以下命令:pip list --not-required
输出内容如下:Package Version ------------ ------- aiohttp 3.6.2 itsdangerous 2.0.1 MarkupSafe 2.0.1 pip 21.3.1 redis 4.2.0 setuptools 39.2.0 Werkzeug 2.0.3exclude
这个选项告诉pip从列出的安装包中排除指定的安装包,也就是说这个选项指定的安装包不会出现在输出中,比如在我机器上执行以下命令:pip list --not-required --exclude aiohttp
输出如下:Package Version ------------ ------- attrs 19.3.0 chardet 3.0.4 idna-ssl 1.1.0 itsdangerous 2.0.1 MarkupSafe 2.0.1 pip 21.3.1 redis 4.2.0 setuptools 39.2.0 Werkzeug 2.0.3 yarl 1.4.2
可见输出的内容已经没有aiohttp这个安装包了。