Конфигурирование так, чтобы установка pip могла работать из github

Мы хотели бы использовать pip с github для установки частных пакетов на наши производственные серверы. Этот вопрос касается того, что должно быть в репозитории github, чтобы установка была успешной.

Предполагая следующую командную строку (которая аутентифицируется просто и пытается установить):

pip install git+ssh://[email protected]/BlahCo/search/tree/prod_release_branch/ProductName

Что нужно для размещения в ProductName? Является ли это содержимым того, что обычно будет в tar файле после запуска setup.py с параметром sdist или является фактическим файлом tar.gz или чем-то еще?

Я спрашиваю здесь, потому что я пробовал несколько вариантов и не могу заставить его работать. Любая помощь была оценена.

Ответ 1

Вам нужен весь пакет python с файлом setup.py.

Пакет с именем foo будет выглядеть следующим образом:

foo # the installable package
├── foo
│   ├── __init__.py
│   └── bar.py
└── setup.py

И установите из github, как:

$ pip install git+https://github.com/myuser/[email protected]
or
$ pip install git+https://github.com/myuser/[email protected]

Дополнительная информация на https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support

Ответ 2

У меня была аналогичная проблема, когда мне приходилось устанавливать из github repo, но не хотелось устанавливать git и т.д.

Простой способ сделать это - использовать zip-архив пакета. Добавьте /zipball/master в URL-адрес репо:

    $ pip install https://github.com/hmarr/django-debug-toolbar-mongo/zipball/master
Downloading/unpacking https://github.com/hmarr/django-debug-toolbar-mongo/zipball/master
  Downloading master
  Running setup.py egg_info for package from https://github.com/hmarr/django-debug-toolbar-mongo/zipball/master
Installing collected packages: django-debug-toolbar-mongo
  Running setup.py install for django-debug-toolbar-mongo
Successfully installed django-debug-toolbar-mongo
Cleaning up...

Таким образом, вы будете работать в pip с репозиториями источника github.

Ответ 3

Если вы хотите использовать файл requirements.txt, вам понадобится git и что-то вроде записи ниже, чтобы анонимно получить мастер-ветвь в requirements.txt.

Для обычной установки:

git+git://github.com/celery/django-celery.git

Для " editable" установить:

-e git://github.com/celery/django-celery.git#egg=django-celery

Редактируемый режим загружает исходный код проекта в ./src в текущем каталоге. Он позволяет pip freeze выводить правильное местоположение github пакета.

Ответ 4

Клонировать целевой репозиторий так же, как вы клонируете любой другой проект:

git clone [email protected]:myuser/foo.git

Затем установите его в режиме разработки:

cd foo
pip install -e .

Вы можете изменить все, что не хотите, и каждый код с использованием пакета foo будет использовать модифицированный код.

Есть два преимущества этого решения:

  • Вы можете установить пакет в каталог домашних проектов.
  • Пакет включает в себя .git dir, поэтому он регулярно репозиторий Git. Вы можете сразу нажать на свою вилку.