instal pip dari cabang git repo

685

Mencoba pipmemasang cabang khusus repo. Google memberitahuku untuk

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

Nama cabang issue/34/oscar-0.6jadi saya lakukan pip install https://github.com/tangentlabs/django-oscar-paypal.git@/issue/34/oscar-0.6tetapi mengembalikan 404.

Bagaimana cara saya menginstal cabang ini?

goh
sumber

Jawaban:

931

Tambahkan awal awalan url git+(Lihat Dukungan VCS ):

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

Dan tentukan nama cabang tanpa yang memimpin /.

falsetru
sumber
5
apakah perlu menentukan cabang atau komit oleh @?
eugene
9
@ eugene, Tidak, @dan bagian setelah itu adalah opsional.
falsetru
3
Hei, sekarang tidak perlu tree, ini membuat kesalahan.
SalahAdDin
6
Apakah untuk cabang, misalnya:pip install -U git+https://github.com/danreeves/[email protected]
SalahAdDin
3
Anda juga dapat memasukkan sesuatu seperti ini git+https://github.com/adiralashiva8/[email protected]ke dalam requirement.txt Anda dan kemudian instal dengan pip install -r requirements.txt. Ini akan menginstal Tag v3.1.4 dari cabang utama.
Wlad
311

Menggunakan pip dengan git + untuk mengkloning repositori dapat menjadi sangat lambat (uji dengan https://github.com/django/django@stable/1.6.x misalnya, itu akan memakan waktu beberapa menit). Hal tercepat yang saya temukan, yang bekerja dengan GitHub dan BitBucket, adalah:

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

yang menjadi untuk django master:

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

untuk django stable / 1.7.x:

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

Dengan BitBucket ini tentang pola yang dapat diprediksi sama:

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

Di sini, cabang master umumnya bernama default. Ini akan membuat persyaratan Anda.txt menginstal lebih cepat.

Beberapa jawaban lain menyebutkan variasi yang diperlukan saat menempatkan paket yang akan diinstal ke Anda requirements.txt. Perhatikan bahwa dengan sintaks arsip ini, terkemuka -edan trailing #egg=blah-blahyang tidak diperlukan, dan Anda hanya bisa hanya menyisipkan URL, sehingga terlihat requirements.txt Anda seperti:

https://github.com/user/repository/archive/branch.zip
Steve K.
sumber
29
Catatan: dari Django 1.9 pada, Django dikirimkan dengan file yang memiliki nama file unicode . Extractor zip yang digunakan oleh pip tersedak itu. Sebuah solusi mudah adalah dengan mengganti .zipdengan .tar.gz, sebagai tar extractor bekerja.
spektrum
4
Saya ingin tahu apakah pip dapat lulus --depth 0ketika kloning untuk membuatnya lebih efisien (seluruh sejarah git tidak diperlukan untuk menginstal snapshot untuk pip). git-scm.com/docs/git-clone
cs01
6
Ini juga berfungsi untuk hash komit! pip install https://github.com/django/django/archive/ebaa08b.zip
Fush
4
Terima kasih telah menunjukkan perbedaan kecepatan. Saya tidak menguji dan membandingkannya, tetapi saya percaya perbedaan kecepatan memang ada, karena menginstal dari cabang masih akan menghasilkan pengunduhan seluruh riwayat repo, sementara menginstal dari .zip(atau .tar.gz) akan menghasilkan pengunduhan hanya snapshot dari repo.
RayLuo
Apakah mungkin untuk menginstal ekstra menggunakan sintaks ini? Sebagai contoh, saya mencoba menginstal github.com/apache/incubator-airflow @ master (paket PyPI normal adalah apache-airflow) untuk bekerja dengan versi yang belum dirilis. Saya ingin mengonversi panggilan pip install apache-airflow[crypto, slack]untuk menginstal ekstra ini dengan versi arsip. Saya mencoba pip install https://github.com/apache/incubator-airflow/archive/master.zip[crypto, slack]tetapi ini merusak URL dan instalasi.
Taylor Edmiston
67

Petunjuk untuk menginstal dari repo pribadi menggunakan kredensial ssh :

$ pip install git+ssh://git@github.com/myuser/foo.git@my_version
Jaakko
sumber
51

Hanya untuk menambahkan tambahan, jika Anda ingin menginstalnya di file pip Anda dapat ditambahkan seperti ini:

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

Ini akan disimpan sebagai telur.

Hassek
sumber
5
Lebih baik menggunakannya tanpa -e. Lihat: stackoverflow.com/a/34518202/451710
Eyal Levin
4
Terima kasih atas komentarnya, sangat menarik. Saya pikir orang cenderung menggunakan -ebendera untuk menghindari kemungkinan konflik dengan paket yang sudah ada. Saya kira ini masalah pilihan
Hassek
4
Dan jika Anda ingin "ekstra", tambahkan dalam fragmen, seperti itu:-e git+https://github.com/tangentlabs/django-oscar-paypal.git@issue/34/oscar-0.6#egg=django-oscar-paypal[PDF]
ankostis
Perhatikan bahwa -esepertinya tidak diperlukan.
Taylor Edmiston
Untuk beberapa alasan, itu tidak berfungsi untuk saya tanpa -e
Kurt Bourbaki
4

Anda menggunakan prosedur instalasi file telur. Prosedur ini mendukung menginstal lebih git, git+http, git+https, git+ssh, git+gitdan git+file. Beberapa di antaranya disebutkan.

Ada baiknya Anda dapat menggunakan cabang, tag, atau hash untuk menginstal.

@Steve_K mencatat bahwa bisa lambat untuk menginstal dengan "git +" dan mengusulkan pemasangan melalui file zip:

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

Atau, saya sarankan Anda dapat menginstal menggunakan .whlfile jika ini ada.

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

Ini format yang cukup baru, lebih baru dari file telur. Itu membutuhkan roda dan setuptools> = 0,8 paket. Anda dapat menemukan lebih banyak di sini .

prosti
sumber
1
Pertanyaannya tidak ditentukan untuk github. Gagasan arsip / branch.zip khusus untuk github saja.
Jorge Leitao
0

Ini bekerja seperti pesona:

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

Dimana:

mengembangkan: Cabang

fabric8-analytics-worker.git: Repo

deepak1725: pengguna

Deepak Sharma
sumber