Pip kurulumunun github'dan çalışabilmesi için yapılandırma


226

Üretim sunucularımıza özel paketler kurmak için github ile pip kullanmak istiyoruz. Bu soru, yüklemenin başarılı olması için github deposunda ne olması gerektiği ile ilgilidir.

Aşağıdaki komut satırını varsayarsak (bu sadece doğrulanır ve yüklemeye çalışır):

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

ProductName'de bulunması gerekenler nelerdir? Sdist seçeneğiyle setup.py dosyasını çalıştırdıktan sonra normalde tar dosyasında yer alan içerik mi, yoksa asıl tar.gz dosyası mı yoksa başka bir şey mi?

Burada soruyorum çünkü birkaç varyasyon denedim ve çalışmasını sağlayamıyorum. Herhangi bir yardım takdir.

Yanıtlar:


290

İçinde bir setup.pydosya bulunan tüm python paketine ihtiyacınız var.

Adlı bir paket foo:

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

Ve github'dan yükleyin:

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

Https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support adresinde daha fazla bilgi


3
Yukarıdaki işler çok teşekkür ederim. Ama ne bir repo içinde bir alt dizinde bültenleri varsa, foo.git yerine foo / release / ProductVer arıyorum. Bu mümkün mü ve eğer öyleyse nasıl? Yardımınız için çok teşekkürler!
ccgillett

4
Hayır, bu mümkün değil. pip en azından git için yalnızca kök depo dizininden kurulur. Yıkımın nasıl davrandığını bilmiyorum ...
Hugo Tavares

3
Bunu ssh ve özel depolar üzerinden yapmak istiyorsanız, bu nasıl yapılacağına dair bir
Jonathan

Neden -eseçeneği (düzenlenebilir mod) pip'e geçmediniz?
Amelio Vazquez-Reina

14
İşte yeni url şeması: pip install git+https://github.com/pypa/pip.git Kaynak: pip Github repo
aboutaaron

111

Github repo'dan kurmak zorunda kaldım, ancak git vb.

Bunu yapmanın basit yolu paketin zip arşivini kullanmaktır. Ekle /zipball/masterRepo URL'ye:

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

Bu şekilde, github kaynak depolarıyla pip çalışması yapacaksınız.


2
Windows altında da çalışan tek cevap budur
divenex

Bu özel depolarla nasıl yapılabilir? (sorunun sorduğu gibi)
Rodrigo E. Principe

29

requirements.txtDosyayı kullanmak istiyorsanız git, ana dalınızı anonim olarak almak için aşağıdaki girişe benzer bir şeye ihtiyacınız olacak requirements.txt.

Düzenli kurulum için:

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

" Düzenlenebilir " kurulum için:

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

Düzenlenebilir mod, projenin kaynak kodunu ./srcgeçerli dizine indirir . pip freezePaketin doğru github lokasyonunun çıkmasını sağlar .


3
o yumurta isimleri nereden geliyor? pip paketini github repo ile değiştirdikten sonra
django'ya

@holms Setup.py içindeki arama adı
wieczorek1990

Nedir #egg=django-celery? Bu bir yer tutucu mu?
enchance

@enchance Paket adı.
wieczorek1990

13

Hedef havuzunu, başka bir projeyi klonladığınız gibi klonlayın:

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

Ardından geliştirme modunda yükleyin:

cd foo
pip install -e .

İstemediğiniz her şeyi değiştirebilirsiniz ve foopaketi kullanan her kod değiştirilmiş kodu kullanır.

Bu çözümün 2 faydası vardır:

  1. Paketi ev projeleri dizininize kurabilirsiniz.
  2. Paket .gitdir içerir , bu yüzden düzenli Git deposu. Çatalı hemen itebilirsin.

2
Bu çözümün büyülü olduğunu ifade edebilirim. Benim durumumda, kesmek istedim pip, bu yüzden pipdepoyu klonladım, bir sanalenv oluşturdum, etkinleştirdim ve yaptım pip install -e .. Sonra pipvirtualenv geliştirme modunda oldu! Bunun paket yöneticisinin kendisi ile bile çalışmasından etkilendim.
Radon Rosborough

Bu harika! Bu yöntemi kullanarak yükleyip çalıştırdığımda pip list, söz konusu paketin Git dalına ve yüklendiği mutlak yola başvurular olduğunu fark ettim. Bunlara atıfta bulunuyor mu veya kaynak silinebilir mi?
MadPhysicist

0

Colab'da bu şekilde deneyebilirsiniz

!git clone https://github.com/UKPLab/sentence-transformers.git
!pip install -e /content/sentence-transformers
import sentence_transformers
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.