cài đặt pip từ chi nhánh git repo


685

Đang cố gắng pipcài đặt một chi nhánh cụ thể của repo. Google bảo tôi

cài đặt pip git + https://github.com/user/repo.git@branch

Tên của chi nhánh là issue/34/oscar-0.6như vậy tôi đã làm pip install https://github.com/tangentlabs/django-oscar-paypal.git@/issue/34/oscar-0.6nhưng nó trả về 404.

Làm thế nào để tôi cài đặt chi nhánh này?

Câu trả lời:


931

Chuẩn bị tiền tố url git+(Xem Hỗ trợ VCS ):

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

Và chỉ định tên chi nhánh mà không dẫn đầu /.


5
nó được sửa đổi để chỉ định chi nhánh hoặc cam kết bởi @?
eugene

9
@eugene, Không, @và các phần sau đó là tùy chọn.
falsetru

3
Này, bây giờ không phải là cần thiết tree, điều này nhận được một lỗi.
SalahAdDin

6
Dành cho các chi nhánh, ví dụ:pip install -U git+https://github.com/danreeves/wagtailgmaps@3.0.0
SalahAdDin

3
Bạn cũng có thể đặt một cái gì đó như thế này git+https://github.com/adiralashiva8/robotframework-metrics@v3.1.4vào tệp.txt của bạn và sau đó cài đặt pip install -r requirements.txt. Điều này sẽ cài đặt Tag v3.1.4 từ nhánh chính.
Wlad

311

Sử dụng pip với git + để sao chép một kho lưu trữ có thể cực kỳ chậm ( ví dụ: thử nghiệm với https://github.com/django/django@urdy/1.6.x , sẽ mất vài phút). Điều nhanh nhất tôi tìm thấy, hoạt động với GitHub và BitBucket, là:

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

mà trở thành cho django master:

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

cho django ổn định / 1.7.x:

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

Với BitBucket, đó là về cùng một mô hình dự đoán:

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

Ở đây, nhánh chủ thường được đặt tên mặc định. Điều này sẽ làm cho yêu cầu của bạn cài đặt nhanh hơn nhiều.

Một số câu trả lời khác đề cập đến các biến thể cần thiết khi đặt gói sẽ được cài đặt vào requirements.txt. Lưu ý rằng với cú pháp lưu trữ này, hàng đầu -evà đuôi #egg=blah-blahđều không cần thiết, và bạn có thể chỉ đơn giản là dán URL, vì vậy vẻ requirements.txt của bạn như:

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

29
Lưu ý: từ Django 1.9 trở đi, Django gửi kèm một tệp có tên tệp unicode . Bộ giải nén zip được sử dụng bởi cuộn cảm pip trên đó. Một cách giải quyết dễ dàng là thay thế .zipbằng .tar.gz, vì trình trích xuất tar hoạt động.
quang phổ

4
Tôi tự hỏi nếu pip có thể vượt qua --depth 0khi nhân bản để làm cho nó hiệu quả hơn (không cần toàn bộ lịch sử git để cài đặt ảnh chụp nhanh cho pip). git-scm.com/docs/git-clone
cs01

6
Điều này cũng hoạt động cho băm cam kết! pip install https://github.com/django/django/archive/ebaa08b.zip
Fush

4
Cảm ơn đã chỉ ra sự khác biệt tốc độ. Tôi đã không kiểm tra và so sánh chúng, nhưng tôi tin rằng sự khác biệt tốc độ tồn tại, bởi vì cài đặt từ một chi nhánh vẫn sẽ dẫn đến việc tải xuống toàn bộ lịch sử repo, trong khi cài đặt từ .zip(hoặc .tar.gz) sẽ chỉ tải xuống một ảnh chụp nhanh của repo.
RayLuo

Có thể cài đặt bổ sung bằng cú pháp này? Chẳng hạn, tôi đang cố gắng cài đặt github.com/apache/incubator-airflow @ master (gói PyPI bình thường là apache-airflow) để hoạt động với phiên bản chưa được phát hành. Tôi muốn chuyển đổi cuộc gọi pip install apache-airflow[crypto, slack]để cài đặt các tính năng bổ sung này với phiên bản lưu trữ. Tôi đã thử pip install https://github.com/apache/incubator-airflow/archive/master.zip[crypto, slack]nhưng điều này phá vỡ URL và cài đặt.
Taylor Edmiston

67

Hướng dẫn cài đặt từ repo riêng bằng thông tin đăng nhập ssh :

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

51

Chỉ cần thêm một phần bổ sung, nếu bạn muốn cài đặt nó trong tệp pip của mình, nó có thể được thêm vào như sau:

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

Nó sẽ được lưu dưới dạng một quả trứng.


5
Tốt hơn để sử dụng nó mà không có -e. Xem: stackoverflow.com/a/34518202/451710
Eyal Levin

4
Cảm ơn các bình luận, rất thú vị. Tôi nghĩ mọi người có xu hướng sử dụng -ecờ để tránh mọi xung đột có thể xảy ra với gói đã tồn tại. Tôi đoán là một vấn đề được lựa chọn
Hassek

4
Và nếu bạn muốn "bổ sung", hãy thêm chúng vào đoạn đó, như thế:-e git+https://github.com/tangentlabs/django-oscar-paypal.git@issue/34/oscar-0.6#egg=django-oscar-paypal[PDF]
ankostis

Lưu ý rằng -edường như không thực sự được yêu cầu.
Taylor Edmiston

Vì một số lý do, nó không hoạt động đối với tôi mà không có-e
Kurt Bourbaki

4

Bạn đã sử dụng các thủ tục cài đặt các tập tin trứng. Thủ tục này hỗ trợ cài đặt qua git, git+http, git+https, git+ssh, git+gitgit+file. Một số trong số này được đề cập.

Thật tốt khi bạn có thể sử dụng các nhánh, thẻ hoặc băm để cài đặt.

@Steve_K lưu ý rằng có thể cài đặt chậm với "git +" và đề xuất cài đặt qua tệp zip:

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

Ngoài ra, tôi đề nghị bạn có thể cài đặt bằng cách sử dụng .whltệp nếu điều này tồn tại.

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

Đó là định dạng khá mới, mới hơn các tệp trứng. Nó đòi hỏi bánh xe và setuptools> = 0,8 gói. Bạn có thể tìm thấy nhiều hơn ở đây .


1
Câu hỏi không được chỉ định cho github. Khái niệm về archive / Branch.zip chỉ dành riêng cho github.
Jorge Leitao

0

Điều này làm việc như quyến rũ:

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

Ở đâu :

phát triển: Chi nhánh

Fabric8-analytics-worker.git: Repo

deepak1725: người dùng

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.