python - `pip3 list` 显示已卸载的软件包

标签 python pip

上周我使用 pip3 安装了 awscli,今天我决定卸载它。卸载成功,但 pip3 list 给出以下输出:

~
❯ pip3 list
Package           Version
----------------- ----------
-                 scli
-wscli            1.16.137
astroid           2.0.4
botocore          1.12.127
certifi           2018.10.15
colorama          0.3.9
docutils          0.14
isort             4.3.4
jmespath          0.9.4
lazy-object-proxy 1.3.1
mccabe            0.6.1
pip               19.0.3
pyasn1            0.4.5
pylint            2.1.1
python-dateutil   2.8.0
PyYAML            3.13
rsa               3.4.2
s3transfer        0.2.0
setuptools        40.8.0
six               1.11.0
urllib3           1.24.1
virtualenv        16.1.0
virtualenv-clone  0.4.0
wheel             0.33.1
wrapt             1.10.11

前两个条目似乎与 awscli 相关。甚至版本号 (1.16.137) 也与 awscli 相同。有谁知道如何解决这个问题吗?

编辑:

发现这个:

/usr/local/lib/python3.7/site-packages
❯ ls
__pycache__                       mccabe-0.6.1.dist-info            virtualenv.py
astroid                           mccabe.py                         virtualenv_clone-0.4.0.dist-info
astroid-2.0.4.dist-info           pip                               virtualenv_support
botocore                          pip-19.0.3-py3.7.egg-info         wheel
botocore-1.12.130.dist-info       pkg_resources                     wheel-0.32.2-py3.7.egg-info
certifi                           pylint                            wheel-0.33.0-py3.7.egg-info
certifi-2018.10.15.dist-info      pylint-2.1.1.dist-info            wheel-0.33.1-py3.7.egg-info
clonevirtualenv.py                setuptools                        wrapt
easy_install.py                   setuptools-40.8.0-py3.7.egg-info  wrapt-1.10.11.dist-info
isort                             sitecustomize.py                  ~-scli-1.16.137.dist-info
isort-4.3.4.dist-info             six-1.11.0.dist-info              ~wscli-1.16.137.dist-info
lazy_object_proxy                 six.py
lazy_object_proxy-1.3.1.dist-info virtualenv-16.1.0.dist-info

删除两个有问题的目录是否安全?

最佳答案

pip list 从路径中的 .dist-info 条目获取此信息。根据您的列表,您似乎有一些额外的名字。请注意末尾的两个条目:

~-scli-1.16.137.dist-info
~wscli-1.16.137.dist-info

只需删除这两个目录条目即可。

请注意,awscli 并未创建这些目录,特别是因为 pip 会使用 universal wheel file to install awscli ,因此安装时不需要运行安装脚本。它们让我想起 Windows 隐藏的锁定文件(以 ~$ 开头),所以也许它们是在您使用另一个我不熟悉的工具时创建的,而该工具可能不小心将这些文件留在了周围。

这些 .dist-info 条目是目录、符号链接(symbolic link)还是文件并不重要,pip list 所做的只是获取所有以.dist-info 然后在第一个 - 处拆分出版本和名称。您只需创建空文件即可创建任何虚拟条目:

$ mkdir demo && cd demo && virtualenv-3.8 .
# ....
$ bin/pip list  # new, empty virtualenv
Package    Version
---------- -------
pip        19.0.3
setuptools 41.0.0
wheel      0.33.1
$ touch lib/python3.8/site-packages/foobar-version.dist-info
$ bin/pip list  # surprise package listed
Package    Version
---------- -------
foobar     version
pip        19.0.3
setuptools 41.0.0
wheel      0.33.1

关于python - `pip3 list` 显示已卸载的软件包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55551372/

相关文章:

python - 梯度如何通过随机样本反向传播?

python - 如何将节点放置在特定位置 - networkx

python - 无法从 anaconda 找到 python 模块,使用 pip 安装的模块

python - Pip 安装到自定义目标目录并排除特定依赖项

python - 安装实用程序模块时出现问题

python - 如何使用groupby中的两个组计算百分比?

python - 如何计算一系列阈值的聚合?

python - 概率标准化的二维直方图

python - "python pip install"命令文件要安装在哪里?

python - 如何测试打包为可重用应用程序的 Django-CMS 插件