`pip3 list` показывает неустановленный пакет - PullRequest
1 голос
/ 06 апреля 2019

На прошлой неделе я установил awscli с pip3, а сегодня решил удалить его.Удаление прошло успешно, но 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 Ответ

3 голосов
/ 06 апреля 2019

pip list берет эту информацию из .dist-info записей на вашем пути. Похоже, у вас есть несколько дополнительных имен, учитывая ваш список. Обратите внимание на две записи в конце:

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

Просто удалите эти две записи каталога.

Обратите внимание, что awscli не создавал эти каталоги, особенно потому, что pip использовал бы для установки 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...