Когда я бегу, pip freeze
я вижу (среди других ожидаемых пакетов) pkg-resources==0.0.0
. Я видел несколько постов, в которых упоминается этот пакет (включая этот ), но ни один из них не объясняет, что это такое и почему он включен в вывод pip freeze
. Основная причина, по которой меня интересует, это из любопытства, но в некоторых случаях, кажется, что-то ломается при попытке установить пакеты с requirements.txt
файлом, созданным с pip freeze
включением pkg-resources==0.0.0
строки (например, когда Travis CI пытается установить зависимости через pip
и находит это линия).
Что pkg-resources
и можно ли удалить эту строку requirements.txt
?
Обновить:
Я обнаружил, что эта строка существует только в выводе, pip freeze
когда я нахожусь в virtualenv
. Я все еще не уверен, что это такое или что он делает, но я буду продолжать расследование, зная, что это, вероятно, связано с virtualenv
.
источник
pip
? Я думаю , это мощь было то , что они пропустили в старом выпуске , так как в у8.1.2
меня нет записи дляpkg-resources
. (Что не следует, так как я уверен, чтоpkg-resources
идет сsetuptools
).virtualenv
, и действительно, когда я не нахожусь в виртуальности, я тоже не вижу этого. Это все еще не объясняет, что это такое, но по крайней мере является ключом, который я могу исследовать.Ответы:
Согласно https://github.com/pypa/pip/issues/4022 , это ошибка, связанная с тем, что Ubuntu предоставляет неверные метаданные для pip. Так что нет, похоже, нет веских причин для такого поведения. Я отправил дополнительную ошибку в Ubuntu. https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1635463
Чтобы сделать резервную копию предыдущего ответа, следует безопасно удалить эту строку из вашего файла require.txt. Вот пример раздела Make file, который безопасно замораживает ваш список пакетов (поместите ваш Makefile и запустите с ним
make freeze
):источник
AttributeError: module 'pkg_resources' has no attribute 'iter_entry_points'
, поэтому я думаю, что лучше всего просто удалить ее изrequirements.txt
Что касается части вашего вопроса " это нормально, чтобы удалить эту строку? ":
У меня та же проблема, которая возникает при разработке Ubuntu 16.04 с той же самой строчкой в требованиях. При развертывании на Debian 8.5 работающий
"pip install -r requirements.txt"
pip жалуется, что pkg-resources "не найден", но установлен глобальный пакет "python-pkg-resources", поэтому зависимость должна быть удовлетворена. То же самое и в Ubuntu: там тоже есть пакет.Как указано здесь, это, кажется, какой-то «неявно установленный пакет».
Итак: Если вы работаете в Debian / Ubuntu с установленными python-pkg-resources, удалить эту строку безопасно . Я так и сделал, и все работает нормально. Однако, поскольку я не специалист по этому вопросу, вы должны помнить, что это может привести к осложнениям при развертывании на другой машине.
источник
virtualenv
?нашел этот ответ по этой ссылке: https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1635463
автор: Луи Бушар (Луис) написал на 2019-11-16:
Это сработало для меня. Но я не эксперт, поэтому, если кто-то поймет это лучше, было бы здорово, если бы это объяснили.
Привет,
для чего бы это ни стоило, проблема исходит от дебианизированной версии virtualenv, которая использует разбитую версию pkg_resource, которая добавляется в virtualenv во время создания:
Использование pip-версии virtualenv может быть эффективным решением проблемы:
hth, ... Луи
источник
В Ubuntu вы можете исправить это, удалив
virtualenv
пакет Ubuntu и установив новую версию изpip
:источник