“Pip install --editable ./” vs “python setup.py develop”


178

Arasında önemli bir fark var mı

pip install -e /path/to/mypackage

ve setuptools varyantı?

python /path/to/mypackage/setup.py develop

1
Bu, geliştirme modunu açıklayan güncellenmiş bir bağlantı gibi görünüyor: setuptools.readthedocs.io/en/latest/…
PaulR

kaldırma ile ilgileniyorsanız (geliştirme / düzenlenebilir modda paketler) bu soruyu deneyin: stackoverflow.com/questions/17346619/…
Charlie Parker

Yanıtlar:


131

setup.pyDoğrudan arama yapmaktan kaçının , pip'e paketinizi kurduğunuzu düzgün bir şekilde söylemez.

İle pip install -e:

Yerel projeler için, proje yoluna göre “SomeProject.egg-info” dizini oluşturulur. Bu, sadece setup.py developgeçerli çalışma dizinine göre “yumurta-bilgisi” ni yaratan sadece kullanıma göre bir avantajdır .

Diğer: dokümanlar

Ayrıca kurulum araçlarının belgelerini de okuyun .


Değişikliğin etkili olması için dosya değişikliği yaptıktan sonra kullanıcının 'python setup.py sdist' dosyasını yeniden çalıştırması gerekiyor mu?
değişken

ancak 'set_trace' ile hata ayıklamanız gerekirse (setup.py dosyasının kendisi) sonra 'python setup.py geliştir' mümkün kılar
mirek

İkinci URL bozuk.
bad_coder

İkisi de benim için çalışıyor.
sobolevn


36

İyilik olabilir Diğer bir farklılık pip install -eda proje bağımlılıkları varsa olmasıdır install_requiresiçinde setup.py, daha sonra pip install -e .ise, pip ile bağımlılıkları yükler python setup.py developile yükleyebilirsiniz easy_install'yumurta bilgi' yukarıda belirtildiği gibi: ve sorunlar yeniden neden olabilir. Ne zaman install-requireskullandığı dependency_linksözel git URL'ler ile ekli yumurta tanımlayıcıları ile, bu özellikle rahatsız edici olabilir.


1
bu tamamen özel paketimin neden yüklenemediğini açıklıyor. devpi sunucumda pypi değil. Teşekkürler.
ckot

Paketin düzenlenebilir hale geldiğini söylediğinizde, kullanıcının paket dosyasında değişiklik yaptıktan sonra 'python setup.py sdist'i yeniden çalıştırması gerekecek mi demek istiyorsunuz? Veya yukarıdaki komutun çalıştırılması gerekmez mi?
değişken

@ değişkeniyle yerel bir paket yüklediğinizde pip install -e ., esasen ilgili Python site paketleri dizininde çalışan kopyanızı gösterecek şekilde bir sembolik bağlantı yapar. Bu çalışma kopyasında kod değişiklikleri yapıldığından, anında "kurulu" sürüme yansıtılır, bu nedenle kurulum komutlarını yeniden çalıştırmanız gerekmez. Bu öncelikle yüklenebilir bir paketi temsil eden bir havuzda geliştirmek için kullanışlıdır, ancak örneğin sadece mutlak ithalata sahip bazı modül koleksiyonlarını yazmak için de kullanışlı olabilir
ely

0

Yine başka bir fark: python setup.py developön sürüm olarak kabul edilen bir sürüm için çalıştırdığınızda (belki de bir sürümü teslim almadığınızda bir git klonundan çalıştırdığınız için), bağımlılıklarınızın ön sürümlerinin yüklenmesini etkinleştireceksiniz . Öte yandan, ile pip install --editablesize geçmek zorunda --prebu ön bültenleri istiyorsanız açıkça.

( Yanlışlıkla kullanılan ön sürümlerle CI günlüğüne bakın ve bunu burada sabit bir yapı ile karşılaştırın .)

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.