`список pip3`, показывающий удаленный пакет

#python #pip

#python #pip

Вопрос:

На прошлой неделе я установил 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 ‘s. Кто-нибудь знает, как решить эту проблему?

Редактировать:

Нашел это:

 /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:

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

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

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

Обратите внимание, что awscli эти каталоги не создавались, особенно потому, что pip использовал бы файл universal wheel для установки awscli , поэтому при его установке не требовалось запускать скрипт установки. Они напоминают мне файлы скрытых блокировок Windows (которые начинаются с ~$ ), поэтому, возможно, они были созданы, когда вы использовали другой инструмент, с которым я не знаком, который, возможно, случайно оставил их без присмотра.

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

 $ mkdir demo amp;amp; cd demo amp;amp; 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
  

Комментарии:

1. В итоге их удалили. Это устранило проблему 🙂

2. @kylemart: Я пытаюсь воспроизвести, что могло произойти, как могли быть добавлены эти два дополнительных каталога ‘package’. Я сообщу, если вам нужно будет сделать что-то еще.

3. Да, довольно странно, как они там оказались. Я использую pip3 только для установки своих пакетов python, поэтому я не думаю, что какие-либо другие инструменты должны быть задействованы. Кроме того, большое спасибо за дальнейшее расследование!