Cấu hình để cài đặt pip có thể hoạt động từ github


226

Chúng tôi muốn sử dụng pip với github để cài đặt các gói riêng cho các máy chủ sản xuất của chúng tôi. Câu hỏi này liên quan đến những gì cần phải có trong repo github để cài đặt thành công.

Giả sử dòng lệnh sau (xác thực tốt và cố gắng cài đặt):

pip install git+ssh://git@github.com/BlahCo/search/tree/prod_release_branch/ProductName

Những gì cần cư trú trong ProductName? Đây có phải là nội dung của những gì thường có trong tệp tar sau khi chạy setup.py với tùy chọn sdist hoặc là tệp tar.gz thực tế hay cái gì khác không?

Tôi đang hỏi ở đây vì tôi đã thử một vài biến thể và không thể làm cho nó hoạt động được. Bất kỳ trợ giúp đánh giá cao.

Câu trả lời:


290

Bạn cần toàn bộ gói python, với một setup.pytập tin trong đó.

Một gói có tên foosẽ là:

foo # the installable package
├── foo
   ├── __init__.py
   └── bar.py
└── setup.py

Và cài đặt từ github như:

$ pip install git+https://github.com/myuser/foo.git@v123
or
$ pip install git+https://github.com/myuser/foo.git@newbranch

Thông tin khác tại https://pip.pypa.io/en/urdy/reference/pip_install/#vcs-support


3
Các công trình trên, cảm ơn bạn rất nhiều. Nhưng điều gì sẽ xảy ra nếu tôi có các bản phát hành trong một thư mục con trong repo, thay vì foo.git tôi đang tìm kiếm foo / phát hành / ProductVer. Điều đó có thể không và nếu có thì như thế nào? Cảm ơn rất nhiều vì sự giúp đỡ!
ccgillett

4
Không, no không thể. Pip chỉ cài đặt từ thư mục kho lưu trữ gốc, ít nhất là cho git. Không biết hành vi lật đổ ...
Hugo Tavares

3
Nếu bạn muốn làm điều này qua ssh và repos riêng, đây là một bài viết về cách làm điều đó
Jonathan

Tại sao bạn không chuyển -etùy chọn (chế độ có thể chỉnh sửa) sang pip?
Amelio Vazquez-Reina

14
Đây là lược đồ url mới: pip install git+https://github.com/pypa/pip.git Nguồn: pip Github repo
aboutaaron

111

Tôi gặp vấn đề tương tự khi tôi phải cài đặt từ github repo, nhưng không muốn cài đặt git, v.v.

Cách đơn giản để làm điều đó là sử dụng kho lưu trữ zip của gói. Thêm vào /zipball/masterURL repo:

    $ pip install https://github.com/hmarr/django-debug-toolbar-mongo/zipball/master
Downloading/unpacking https://github.com/hmarr/django-debug-toolbar-mongo/zipball/master
  Downloading master
  Running setup.py egg_info for package from https://github.com/hmarr/django-debug-toolbar-mongo/zipball/master
Installing collected packages: django-debug-toolbar-mongo
  Running setup.py install for django-debug-toolbar-mongo
Successfully installed django-debug-toolbar-mongo
Cleaning up...

Bằng cách này, bạn sẽ làm cho pip hoạt động với kho lưu trữ nguồn github.


2
Đây là câu trả lời duy nhất cũng hoạt động trong Windows
divenex 30/03/2017

Làm thế nào điều này có thể được thực hiện với các kho riêng? (như câu hỏi)
Rodrigo E. Principe

29

Nếu bạn muốn sử dụng requirements.txttệp, bạn sẽ cần gitvà một cái gì đó giống như mục bên dưới để lấy ẩn danh nhánh chính trong của bạn requirements.txt.

Để cài đặt thường xuyên:

git+git://github.com/celery/django-celery.git

Để cài đặt " có thể chỉnh sửa ":

-e git://github.com/celery/django-celery.git#egg=django-celery

Chế độ có thể chỉnh sửa tải mã nguồn của dự án vào ./srctrong thư mục hiện tại. Nó cho phép pip freezexuất vị trí github chính xác của gói.


3
tên trứng đó đến từ đâu? nó không tải được gói trong django sau khi thay thế gói pip bằng github repo
holms

@holms Tên tra cứu trong setup.py
wieczorek1990

Có gì #egg=django-celery? Đó có phải là một giữ chỗ?
enchance

@enchance Đó là tên gói.
wieczorek1990

13

Sao chép kho lưu trữ đích giống như cách bạn nhân bản bất kỳ dự án nào khác:

git clone git@github.com:myuser/foo.git

Sau đó cài đặt nó trong chế độ phát triển:

cd foo
pip install -e .

Bạn có thể thay đổi bất cứ điều gì bạn muốn và mọi mã sử dụng foogói sẽ sử dụng mã được sửa đổi.

Có 2 lợi ích khi giải pháp này:

  1. Bạn có thể cài đặt gói trong thư mục dự án nhà của bạn.
  2. Gói bao gồm .gitthư mục, vì vậy đó là kho Git thông thường. Bạn có thể đẩy đến ngã ba của bạn ngay lập tức.

2
Tôi có thể làm chứng rằng giải pháp này thật kỳ diệu. Trong trường hợp của tôi, tôi muốn hack pip, vì vậy tôi đã nhân bản pipkho lưu trữ, tạo một virtualenv, kích hoạt nó và đã làm pip install -e .. Sau đó, piptrong virtualenv là trong chế độ phát triển! Tôi ấn tượng rằng điều này hoạt động ngay cả với chính trình quản lý gói.
Radon Rosborough

Điều đó thật tuyệt! Tôi nhận thấy rằng khi tôi cài đặt bằng phương thức này và sau đó chạy pip list, gói được đề cập có tham chiếu đến nhánh Git và đường dẫn tuyệt đối mà nó được cài đặt. Liệu nó có giữ bất kỳ tài liệu tham khảo nào cho những nguồn đó hoặc nguồn có thể bị xóa không?
MadPhysicist

0

bạn có thể thử cách này trong Colab

!git clone https://github.com/UKPLab/sentence-transformers.git
!pip install -e /content/sentence-transformers
import sentence_transformers
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.