встановити піп з відділення git repo


686

Спроба 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.

Як встановити цю гілку?

Відповіді:


932

Додайте префікс URL git+(див. Підтримку VCS ):

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

І вказати назву філії без ведучої /.


5
чи обов'язково вказувати філію чи здійснювати @?
Євген

9
@eugene, Ні, @і деталі після цього необов’язкові.
фальцетру

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до своїх вимог.txt, а потім встановити pip install -r requirements.txt. Це встановить тег 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

для стабільного джанго / 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

Тут головна гілка зазвичай називається за замовчуванням. Це зробить встановлення ваших вимог.txt набагато швидшим.

Деякі інші відповіді згадують варіанти, необхідні при розміщенні пакета для встановлення у ваш 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
Цікаво, чи піп може пройти --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

51

Просто, щоб додати додатковий, якщо ви хочете встановити його у вашому поштовому файлі, його можна додати так:

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

Це буде збережено як яйце.


5
Краще використовувати його без -e. Дивіться: stackoverflow.com/a/34518202/451710
Eyal Levin

4
Дякую за коментар, дуже цікаво. Я думаю, що люди прагнуть використовувати -eпрапор, щоб уникнути можливого конфлікту з уже існуючим пакетом. Я думаю, це питання вибору
Hassek

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: користувач

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.