Подтвердить что ты не робот

Что такое "pkg-resources == 0.0.0" в выводе команды pip freeze

Когда я запускаю 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?

Update:

Я обнаружил, что эта строка, кажется, существует только на выходе pip freeze, когда я нахожусь в virtualenv. Я все еще не уверен, что это такое или что он делает, но я буду исследовать далее, зная, что он, вероятно, связан с virtualenv.

4b9b3361

Ответ 1

Согласно https://github.com/pypa/pip/issues/4022, это ошибка, возникающая из-за того, что Ubuntu предоставляет неправильные метаданные для pip. Таким образом, нет никаких причин для такого поведения. Я подал дополнительную ошибку с Ubuntu. https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1635463

Чтобы выполнить резервное копирование предыдущего ответа, безопасно удалить эту строку из вашего требования. txt. Ниже приведен пример создания файловой строфы, которая безопасно замораживает список ваших пакетов (зайдите в Makefile и запустите с помощью make freeze):

freeze:
    pip freeze | grep -v "pkg-resources" > requirements.txt

Ответ 2

Что касается части вашего вопроса "нормально ли удалять эту строку":

У меня та же проблема, что и на ubuntu 16.04, с той самой строкой в ​​требованиях. Когда развертывание на debian 8.5 running "pip install -r requirements.txt" pip жалуется, что pkg-resources "не найден", но есть глобальный пакет, установленный "python-pkg-resources", поэтому зависимость должна быть удовлетворена. То же самое на ubuntu: пакет существует и там.

Как указано здесь, это выглядит как "неявно установленный пакет".

Итак: если вы используете Debian/Ubuntu с установленными python-pkg-ресурсами , следует удалить эту строку. Я сделал это, и все работает нормально. Однако, поскольку я не эксперт в этом, вы должны иметь в виду, что это может привести к осложнениям при развертывании на другой машине.