#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, поэтому я не думаю, что какие-либо другие инструменты должны быть задействованы. Кроме того, большое спасибо за дальнейшее расследование!