Как заставить pip-пакеты с управлением исходным кодом соответствовать требованиям других пакетов

Когда пакет установлен из хранилища, pip freeze дает путь к хранилищу для этого пакета, а не имя / версию пакета. Пример:

-e git+https://github.com/ryneeverett/Python-Markdown.git@11f0b010395a86eac93db0816bcf984639b839e9#egg=Markdown-master

Когда такой пакет требуется другим приложением, он, кажется, не распознается. Пример:

$ hyde gen
Traceback (most recent call last):
  File "/home/ryne/.virtualenvs/DEV/bin/hyde", line 5, in <module>
    from pkg_resources import load_entry_point
  File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 2675, in <module>
    def extras(self):
  File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 552, in resolve
    if item not in self.entry_keys:
pkg_resources.DistributionNotFound: Markdown==2.3.1

Как следует избегать таких проблем?

1 ответ

Решение

Я не могу подтвердить, решило ли это мою древнюю проблему, но (просмотрев исходный код pip), я почти уверен в том, в чем проблема:

Я устанавливал из git, потому что я хотел последнюю версию разработки плюс мои модификации. Hyde (редко поддерживаемый сторонний пакет) прикрепил версию уценки, которая почти наверняка была на несколько выпусков позади. Таким образом, проблема была в том, что версия уценки, указанная в setup.py моего форка, на самом деле не была 2.3.1.

Процитирую свой ответ на другой вопрос:

Pip решает, удовлетворяется ли требование исключительно на основе номера версии (в setup.py).

Другие вопросы по тегам