Как я могу использовать репозитории git в качестве зависимостей для моего пакета PyPi? - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть пакет, который я отправляю в PyPi, и некоторые зависимости - это не пакеты, а устанавливаемые git-репозитории.Мой requirements.txt выглядит следующим образом

sphinx_bootstrap_theme>=0.6.5
matplotlib>=2.2.0
numpy>=1.15.0
sphinx>=1.7.5
sphinx-argparse>=0.2.2
tensorboardX
tqdm>=4.24.0
Cython>=0.28.5

# git repos
git+git://github.com/themightyoarfish/svcca-gpu.git

Соответственно, мой setup.py имеет следующее содержимое:

#!/usr/bin/env python

from distutils.core import setup
import setuptools
import os

with open('requirements.txt', mode='r') as f:
    requirements = f.read()
    required_pkgs, required_repos = requirements.split('# git repos')
    required_pkgs = required_pkgs.split()
    required_repos = required_repos.split()

with open('README.md') as f:
    readme = f.read()

setup(name=...
      ...
      packages=setuptools.find_packages('.', include=[...]),
      install_requires=required_pkgs,
      dependency_links=required_repos,
      zip_safe=False,   # don't install egg, but source
)

Но запуск pip install <package> фактически не устанавливает зависимость git.Я предполагаю, что pip на самом деле не использует сценарий установки.Это работает, когда я запускаю python setup.py install вручную.

Редактировать :

Я также пытался удалить dependency_links и просто использовать install_requires с хранилищем, но при установкемой репозиторий от GitHub (проект, включающий в себя вышеуказанные файлы), я встречался с

    Complete output from command python setup.py egg_info:
error in ikkuna setup command: 'install_requires' must be a string or 
list of strings containing valid project/version requirement specifiers; Invalid requirement, parse error at "'+git://g'"

В других ответах было предложено, что можно поместить что-то вроде

git+https://github.com/themightyoarfish/svcca-gpu.git#egg=svcca

вrequirements.txt, но это не работает с

   error in <pkg> setup command: 'install_requires' must be a string or list of strings containing valid project/version requirement specifiers; Invalid requirement, parse error at "'+https:/'

Вопрос: (Как) Могу ли я перечислить git-репозитории как зависимости для пакета pip?

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Из примерно 50 различных способов задания git-зависимостей для Pip, единственный, который сделал то, что я хотел, был этот (набросок в PEP 508):

svcca @ git+ssh://git@github.com/themightyoarfish/svcca-gpu

Это можно использовать вinstall_requires, который решает проблему игнорирования dependency_links pip.

Забавный побочный эффект заключается в том, что пакет не может быть загружен в PyPi с такой зависимостью:

HTTPError: 400 Client Error: Invalid value for requires_dist. Error: Can't have direct dependency: 'svcca @ git+ssh://git@github.com/themightyoarfish/svcca-gpu' for url: https://upload.pypi.org/legacy/
0 голосов
/ 26 февраля 2019

Согласно следующему посту, связанному с Как указывать в require.txt прямой источник на github .Вы можете добавить пакет из удаленного репозитория git со следующим синтаксисом:

-e git://github.com/themightyoarfish/svcca-gpu.git

Ссылка: Установить проект в редактируемом режиме (т.е. setuptools «режим разработки»)) из локального пути проекта или URL VCS с -e

...