`pip3 list`显示卸载的软件包

时间:2019-04-06 16:55:43

标签: 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

可以安全删除两个有问题的目录吗?

1 个答案:

答案 0 :(得分:3)

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条目是目录,符号链接还是文件并不重要,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