установка pip из ветки git repo

687

Попытка pipустановить специальную ветку репо. Google говорит мне

pip install git + https://github.com/user/repo.git@branch

Название филиала является issue/34/oscar-0.6так что я сделал , pip install https://github.com/tangentlabs/django-oscar-paypal.git@/issue/34/oscar-0.6но его возвращение 404.

Как мне установить эту ветку?

Гох
источник

Ответы:

933

Добавьте префикс url git+(см. Поддержка VCS ):

pip install git+https://github.com/tangentlabs/django-oscar-paypal.git@issue/34/oscar-0.6

И укажите название филиала без ведущего /.

falsetru
источник
5
Обязательно ли указывать ветку или коммит @?
Евгений
9
@eugene, нет, @а запчасти после этого не обязательны.
falsetru
3
Эй, теперь не нужно ставить tree, это ошибка.
SalahAdDin
6
Это для филиалов, например:pip install -U git+https://github.com/danreeves/wagtailgmaps@3.0.0
SalahAdDin
3
Вы также можете поместить что-то подобное git+https://github.com/adiralashiva8/robotframework-metrics@v3.1.4в ваш файл require.txt, а затем установить его pip install -r requirements.txt. Это установит Tag v3.1.4 из главной ветки.
Wlad
311

Использование pip с git + для клонирования репозитория может быть очень медленным ( например, протестируйте с https://github.com/django/django@stable/1.6.x , это займет несколько минут). Самая быстрая вещь, которую я нашел, которая работает с GitHub и BitBucket, это:

pip install https://github.com/user/repository/archive/branch.zip

что делается для мастера Джанго:

pip install https://github.com/django/django/archive/master.zip

для django stable / 1.7.x:

pip install https://github.com/django/django/archive/stable/1.7.x.zip

С BitBucket это примерно такой же предсказуемый шаблон:

pip install https://bitbucket.org/izi/django-admin-tools/get/default.zip

Здесь главная ветвь обычно называется default. Это значительно ускорит установку ваших требований.

В некоторых других ответах упоминаются варианты, необходимые для размещения пакета, устанавливаемого в ваш requirements.txt. Обратите внимание , что при этом архивном синтаксисе, ведущие -eи ведомые #egg=blah-blahкоторые не требуется, и вы можете просто вставить URL, поэтому ваш requirements.txt выглядит следующим образом :

https://github.com/user/repository/archive/branch.zip
Стив К
источник
29
Примечание. Начиная с версии Django 1.9, Django поставляется с файлом с именем в формате Unicode . Застежка-молния, используемая пипсами на этом. Простое решение заключается в замене .zipс .tar.gz, так как работает деготь экстрактор.
спектры
4
Интересно, может ли pip пройти --depth 0при клонировании, чтобы сделать его более эффективным (вся история git не нужна для установки снимка для pip). git-scm.com/docs/git-clone
cs01
6
Это также работает для фиксации хэшей! pip install https://github.com/django/django/archive/ebaa08b.zip
Fush
4
Спасибо за указание на разницу в скорости. Я не тестировал и не сравнивал их, но я полагаю, что разница в скорости существует, потому что установка из ветви все равно приведет к загрузке всей истории репо, а установка из .zip(или .tar.gz) приведет к загрузке только снимка репо.
RayLuo
Можно ли установить дополнения, используя этот синтаксис? Например, я пытаюсь установить github.com/apache/incubator-airflow @ master (обычный пакет PyPI - apache-airflow) для работы с невыпущенной версией. Я хотел бы преобразовать вызов, pip install apache-airflow[crypto, slack]чтобы установить эти дополнения с версией архива. Я пытался, pip install https://github.com/apache/incubator-airflow/archive/master.zip[crypto, slack]но это нарушает URL и установку.
Тейлор
67

Инструкции по установке из частного репозитория с использованием учетных данных ssh :

$ pip install git+ssh://git@github.com/myuser/foo.git@my_version
Jaakko
источник
51

Просто для добавления дополнительного, если вы хотите установить его в свой файл pip, его можно добавить так:

-e git+https://github.com/tangentlabs/django-oscar-paypal.git@issue/34/oscar-0.6#egg=django-oscar-paypal

Это будет сохранено как яйцо все же.

Hassek
источник
5
Лучше использовать его без -e. См .: stackoverflow.com/a/34518202/451710
Эяль Левин
4
Спасибо за комментарий, очень интересно. Я думаю, что люди склонны использовать -eфлаг, чтобы избежать любого возможного конфликта с уже существующим пакетом. Я думаю, это вопрос выбора
Хассек
4
И если вы хотите «статисты», добавьте их во фрагмент, например:-e git+https://github.com/tangentlabs/django-oscar-paypal.git@issue/34/oscar-0.6#egg=django-oscar-paypal[PDF]
ankostis
Обратите внимание, что на -eсамом деле, кажется, не требуется.
Тейлор
По некоторым причинам, это не работает для меня без-e
Курт Бурбаки
4

Вы использовали процедуру установки яичных файлов. Эта процедура поддерживает установку более git, git+http, git+https, git+ssh, git+gitи git+file. Некоторые из них упоминаются.

Хорошо, что вы можете использовать ветки, теги или хэши для установки.

@Steve_K отметил, что установка с «git +» может быть медленной, и предложил установить через zip-файл:

pip install https://github.com/user/repository/archive/branch.zip

В качестве альтернативы я предлагаю вам установить .whlфайл, если он существует.

pip install https://github.com/user/repository/archive/branch.whl

Это довольно новый формат, более новый, чем яйца. Требуется колесо и setuptools> = 0,8 пакетов. Вы можете найти больше здесь .

прости
источник
1
Вопрос не уточняйте на github. Понятие архива / branch.zip относится только к github.
Хорхе Лейтао
0

Это работает как шарм:

pip3 install git+https://github.com/deepak1725/fabric8-analytics-worker.git@develop

Куда :

разработка: филиал

fabric8-analytics-worker.git: Репо

deepak1725: пользователь

Дипак Шарма
источник