пакет установки pip все еще не переходит по ссылкам зависимости - PullRequest
0 голосов
/ 26 сентября 2018

У меня серьезные проблемы с использованием setup.py для установки моего пакета, который также имеет ссылки на зависимости.Я полностью прочитал этот ответ и этот , и ни один из ответов, включая принятые, не помог.

Вот setup.py для пакета, пытающегося установить.По сути, он считывает файл require.txt, чтобы заполнить install_requires и dependency_links, большая часть остальной части кода представляет собой шаблон из cookie-cutter.require.txt имеет частный репозиторий github, который вызывает проблемы.Например, git+https://${GITHUB_OAUTH_TOKEN}@github.com/jmerkow/pripy.git#egg=pripy

Когда я запускаю pip install -r requirements.txt, все отлично работает, он устанавливает частный репозиторий.Однако, если я пытаюсь установить, используя pip install . --process-dependency-links, я получаю эту ошибку:

Could not find a version that satisfies the requirement pripy (from mypackage==<sha>) (from versions: )
No matching distribution found for pripy (from mypackage==<sha>)

Если я удаляю #egg=xxx из ссылки в требованиях, пакет приватного репо полностью игнорируется pip install . но не pip install -r requirements.txt.

Я подтвердил, что dependency_links содержит 'git+https://<actual-token>@github.com/jmerkow/pripy.git#egg=pripy', а install_requires включает 'pripy'

Как правильно настроитьпроблема с субпакетом?setup.py в этом репо выполняется почти так же, за исключением закрытых ссылок.

1 Ответ

0 голосов
/ 26 сентября 2018

Тьфу, это всегда происходит.Я вкладываю всю работу в вопрос, а потом сам разбираюсь в этом.

Проблема в двух вещах: во-первых, для всех зависимых_линков должна быть версия, во-вторых, чтобы правильно извлечь версию из файла требований, вынужно немного поработать над строкой.

По сравнению с вышеупомянутым setup.py я изменяю способ добавления требований в два списка (обновлено здесь ).Затем добавьте версию к #egg=xxx по ссылке, например, git+https://${GITHUB_OAUTH_TOKEN}@github.com/jmerkow/pripy.git#egg=pripy-0.

Теперь setup.py проанализирует этот файл, возьмет информацию о версии яйца, преобразует ее в версию в пипсах (в основном заменит первую * 1011).* с '==') для install_requires, и все готово.

...