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?

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 /.


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/wagtailgmaps@3.0.0
SalahAdDin

3
Anda juga dapat memasukkan sesuatu seperti ini git+https://github.com/adiralashiva8/robotframework-metrics@v3.1.4ke 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

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

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.


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 .


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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.