Що таке "pkg-ресурси == 0.0.0" у висновку команди pip freeze


157

Коли я бігаю, 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.


"Схоже, в деяких випадках все порушується при спробі встановлення пакунків з файлом Requixt.txt, сформованим із заморожуванням pip, що включає рядок pkg-resources == 0.0.0." . Чи можете ви навести приклад для цього?
Дімітріс Фасаракіс Хілліард

@Jim, хороший момент. Я додав приклад, в який я зіткнувся.
елефан

хм, яка у вас версія pip? Я думаю, що це може бути чимось, що вони пропустили в старому випуску, оскільки в 8.1.2мене немає запису pkg-resources. (Що не повинно, оскільки я майже впевнений, що pkg-resourcesприходить setuptools).
Дімітріс Фасаракіс Хілліард

1
@Jim мені просто прийшло в голову, що це може бути пов'язано virtualenv, і справді, коли я не перебуваю у virtualenv, я також цього не бачу. Це все ще не пояснює, що це таке, але принаймні є підказкою, яку я можу дослідити.
елетан

Відповіді:


182

Згідно з https://github.com/pypa/pip/isissue/4022 , це помилка в результаті Ubuntu, що надає неправильні метадані для запису. Отже, ні, здається, це не є вагомою причиною такої поведінки. Я подав повідомлення про помилку в Ubuntu. https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1635463

Щоб створити резервну копію попередньої відповіді, слід безпечно видалити цей рядок зі своїх вимог.txt. Ось приклад Зробити строфу файлу, яка безпечно заморожує список ваших пакетів (опустіть свій Makefile та запустіть make freeze):

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

9
Це не специфічна помилка Ubuntu, у debian є така ж проблема
медуза

1
Спочатку ідея @MohammedShareefC, здавалося, спрацювала, але потім у мене вийшло AttributeError: module 'pkg_resources' has no attribute 'iter_entry_points', тому я вважаю, що найкраще просто її видалитиrequirements.txt
арод

2
все ще викликає головний біль при спробі розвернутись до геронку
Мартінс

3
Здається, проблема з ubuntu 18.04
Carmine Tambascia

3
Проблема з Python 3.8 на Ubuntu 19.04
eric.frederich

13

Що стосується частини вашого питання " чи добре видалити цей рядок? ":

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

Як зазначено тут, схоже, це якийсь "неявно встановлений пакет".

Отже: Якщо ви перебуваєте на Debian / Ubuntu з встановленими ресурсами python-pkg-ресурсів, слід видалити цю лінію . Я так і зробив, і все працює нормально. Однак, оскільки я не експерт з цього питання, ви повинні мати на увазі, що це може призвести до ускладнень при розгортанні на іншій машині.


Дякуємо за інформацію. Я в кінцевому підсумку видалив його, і жодних наслідків не бачив, але, звичайно, застосовуються ті самі застереження, які ви згадуєте. Де ви встановлюєте в / з а virtualenvтакож?
елефан

Так, я спробував встановити всередині virtualenv. Оскільки пакет із загальнодоступною системою присутній, і я не хотів псувати речі, я не намагався встановити за кожну систему.
karlsebal

1

знайшов цю відповідь за посиланням: https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1635463

автор: Луї Бушар (Луї) написав 2019-11-16:

Це працювало для мене. Але я не експерт, тому, якщо хтось краще це відтягне, було б чудово, якби це пояснили.

Здравствуйте,

для чого це варто, проблема виходить із дебіанізованої версії virtualenv, яка використовує розблоковану версію pkg_resource, яка потрапляє у virtualenv під час створення:

$ virtualenv .
Running virtualenv with interpreter /usr/bin/python2
New python executable in /home/caribou/git/quividi/test/bin/python2
Also creating executable in /home/caribou/git/quividi/test/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.
$ pip freeze
pkg-resources==0.0.0

Використання встановленої на pip версії virtualenv може бути вирішувальним:

$ sudo apt -y purge python3-virtualenv virtualenv tox
$ pip install virtualenv
$ virtualenv .
pip install virtualenv
Collecting virtualenv
  Downloading https://files.pythonhosted.org/packages/c5/97/00dd42a0fc41e9016b23f07ec7f657f636cb672fad9cf72b80f8f65c6a46/virtualenv-16.7.7-py2.py3-none-any.whl (3.4MB)
    100% |████████████████████████████████| 3.4MB 351kB/s
Installing collected packages: virtualenv
Successfully installed virtualenv-16.7.7
$ virtualenv .
New python executable in /home/caribou/git/quividi/test/bin/python
Installing setuptools, pip, wheel...
done.
$ source bin/activate
$ pip freeze
$

чт, ... Луї


-2

На Ubuntu ви можете це виправити, видаливши virtualenvпакет Ubuntu та встановивши нову версію з pip:

sudo apt remove virtualenv
sudo pip install -U virtualenv
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.