instalacja pip z gałęzi git repo

686

Próba pipzainstalowania określonego oddziału repozytorium. Google każe mi to zrobić

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

Nazwa oddziału jest issue/34/oscar-0.6taka, jak ja, pip install https://github.com/tangentlabs/django-oscar-paypal.git@/issue/34/oscar-0.6ale zwraca 404.

Jak zainstalować ten oddział?

goh
źródło

Odpowiedzi:

932

Dodaj prefiks adresu URL git+(patrz Pomoc VCS ):

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

I podaj nazwę oddziału bez wiodącego /.

falsetru
źródło
5
czy konieczne jest określenie oddziału lub zatwierdzenie przez @?
eugene
9
@eugene, No, @a później części są opcjonalne.
falsetru
3
Hej, teraz nie jest to konieczne tree, pojawia się błąd.
SalahAdDin
6
pip install -U git+https://github.com/danreeves/[email protected]
Dotyczy
3
Możesz także umieścić coś takiego git+https://github.com/adiralashiva8/[email protected]w pliku wymagania.txt, a następnie zainstalować za pomocą pip install -r requirements.txt. Spowoduje to zainstalowanie Tag v3.1.4 z gałęzi master.
Wlad
311

Używanie pip z git + do klonowania repozytorium może być bardzo powolne (przetestuj na przykład https://github.com/django/django@stable/1.6.x , to zajmie kilka minut). Najszybszą rzeczą, jaką znalazłem, która współpracuje z GitHub i BitBucket, jest:

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

która staje się dla django master:

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

dla django stable / 1.7.x:

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

W BitBucket chodzi o ten sam przewidywalny wzorzec:

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

Tutaj gałąź główna jest ogólnie nazywana domyślną. Spowoduje to, że instalacja pliku wymagania.txt będzie znacznie szybsza.

Niektóre inne odpowiedzi wspominają o wariacjach wymaganych podczas umieszczania pakietu, który ma zostać zainstalowany requirements.txt. Zauważ, że przy tej składni archiwum, wiodące -ei końcowe nie#egg=blah-blah są wymagane i możesz po prostu wkleić adres URL, aby Twoje wymagania.txt wyglądały następująco:

https://github.com/user/repository/archive/branch.zip
Steve K.
źródło
29
Uwaga: od wersji Django 1.9 Django jest dostarczane z plikiem o nazwie pliku Unicode . Do tego celu służy ekstraktor zip używany przez dławiki pip. Łatwym obejściem jest zastąpienie .zipgo .tar.gz, ponieważ działa ekstraktor smoły.
spectras
4
Zastanawiam się, czy pip mógłby przejść --depth 0podczas klonowania, aby uczynić go bardziej wydajnym (cała historia git nie jest potrzebna do zainstalowania migawki dla pipa). git-scm.com/docs/git-clone
cs01
6
Działa to również dla skrótów zatwierdzających! pip install https://github.com/django/django/archive/ebaa08b.zip
Fush
4
Dzięki za wskazanie różnicy prędkości. Nie testowałem ich i nie porównywałem, ale uważam, że różnica prędkości istnieje, ponieważ instalacja z oddziału nadal skutkowałaby pobraniem całej historii repo, podczas gdy instalacja z .zip(lub .tar.gz) spowodowałaby pobranie tylko migawki repozytorium.
RayLuo
Czy można zainstalować dodatki przy użyciu tej składni? Na przykład próbuję zainstalować github.com/apache/incubator-airflow @ master (normalnym pakietem PyPI jest apache-airflow), aby działał z niewydaną wersją. Chciałbym przekonwertować połączenie, pip install apache-airflow[crypto, slack]aby zainstalować te dodatki w wersji archiwalnej. Próbowałem, pip install https://github.com/apache/incubator-airflow/archive/master.zip[crypto, slack]ale powoduje to uszkodzenie adresu URL i instalacji.
Taylor Edmiston,
67

Instrukcje instalacji z prywatnego repozytorium przy użyciu poświadczeń ssh :

$ pip install git+ssh://git@github.com/myuser/foo.git@my_version
Jaakko
źródło
51

Aby dodać dodatkowy, jeśli chcesz go zainstalować w pliku pip, możesz go dodać w następujący sposób:

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

Zostanie jednak zapisane jako jajko.

Hassek
źródło
5
Lepiej używać go bez -e. Zobacz: stackoverflow.com/a/34518202/451710
Eyal Levin
4
Dzięki za komentarz, bardzo interesujące. Myślę, że ludzie używają -eflagi, aby uniknąć ewentualnego konfliktu z już istniejącym pakietem. Myślę, że to kwestia wyboru
Hassek
4
A jeśli chcesz „dodatków”, dodaj je do fragmentu, w ten sposób:-e git+https://github.com/tangentlabs/django-oscar-paypal.git@issue/34/oscar-0.6#egg=django-oscar-paypal[PDF]
ankostis
Zauważ, że -etak naprawdę nie jest to wymagane.
Taylor Edmiston,
Z jakiegoś powodu nie działa dla mnie bez-e
Kurt Bourbaki
4

Użyłeś procedury instalacji plików jaj. Ta procedura instalacji przez wsporniki git, git+http, git+https, git+ssh, git+giti git+file. Niektóre z nich są wymienione.

Dobrze jest zainstalować gałęzie, tagi lub skróty.

@Steve_K zauważył, że instalacja może być powolna z „git +” i zaproponował instalację za pomocą pliku zip:

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

Alternatywnie sugeruję, abyś mógł zainstalować przy użyciu .whlpliku, jeśli taki istnieje.

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

To całkiem nowy format, nowszy niż pliki jajek. Wymaga koła i setuptools> = 0,8 opakowań. Możesz znaleźć więcej tutaj .

prosti
źródło
1
Pytanie nie jest określone na github. Pojęcie archive / branch.zip jest specyficzne tylko dla github.
Jorge Leitao
0

To działało jak urok:

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

Gdzie :

rozwijać: Oddział

fabric8-analytics-worker.git: Repo

deepak1725: użytkownik

Deepak Sharma
źródło