Python setup.py geliştirmek vs install


336

Setup.py dosyası içerisine İki seçenek developve installkafamı karıştırıyorsun. Bu siteye göre , developsite paketleri dizinine özel bir bağlantı oluşturur.

İnsanlar python setup.py installyeni bir kurulum python setup.py developiçin ve kurulum dosyasında herhangi bir değişiklik yapıldıktan sonra kullanmamı önerdi .

Herkes bu komutların kullanımına biraz ışık tutabilir mi?

Yanıtlar:


468

python setup.py install geliştirmeyeceğiniz / değiştirmeyeceğiniz / hatalarını ayıklayamayacağınız paketleri (genellikle üçüncü taraf) yüklemek için kullanılır.

Kendi eşyalarınız için, önce paketinizi yüklemek ve ardından paketi her seferinde yeniden yüklemeye gerek kalmadan kodu sık sık düzenlemek istersiniz - ve tam olarak ne python setup.py developyapar: paketi yükler (genellikle sadece bir kaynak klasör) (sanal) ortama yüklendikten sonra kodunuzu kolayca düzenlemenizi ve değişikliklerin derhal yürürlüğe girmesini sağlayacak şekilde.

Paketleri yüklemek için doğrudan pip install .(yükleme) ve pip install -e .(geliştirici yükleme) kullanmanız önemle önerilir , çünkü setup.pydoğrudan çağırmak , çekme öncesi ve uyumsuz paket sürümleri gibi birçok bağımlılık için yanlış şeyler yapar veya paketin kaldırılmasını zorlaştırır pip.


81
Erik haklı. Ayrıca, bilgisayar korsanlığını bitirdiğinizde kullanabileceğiniz setup.py developbir --uninstallseçenekle birlikte gelir .
philadams

5
Son düşünce burada setup.py developbir python paketi kesmek için başka bir seçenek olduğunu "paketi düzgün çözmek için basit (ama açık) yol modifikasyonu" yeniden Kenneth Reitz
philadams

4
python setup.py developCeilometer'ı yerel kalkınma için kurmaya çalışırken sorunla karşılaştım . Kırpılan sorunlarıpip install -e PATH önlemek için (bir sanalenv içinde) kullanarak sona erdi . easy_install
Joe D'Andrea

1
bu önemli olup olmadığından emin değilim, ama ben python 3 vb kullanıyorsanız, biri python setup.py developfarklı çalıştırmak zorunda mı?
Charlie Parker

1
Python3 ile çalışır, ancak mevcut çakışma kurulumunu kaldırmayı unutmayın, çünkü bunlar birlikte çatışacaklardır (şu anda başıma geldi).
Léo Germond

124

Gönderen belgeler . developPaketini yüklemek olmaz ama bir yaratacak .egg-linkproje kaynak kod dizinine dağıtım dizin arkada.

Bu yüzden yüklemek gibi, ancak kopyalamak yerine site-packagessembolik bir bağlantı ekler ( .egg-linkçok platformlu sembolik bir bağlantı gibi davranır).

Bu şekilde, kaynak kodunu düzenleyebilir ve her küçük değişiklik yaptığınızda yeniden yüklemenize gerek kalmadan değişiklikleri doğrudan görebilirsiniz . Bu, projenin geliştiricisi olduğunuzda, dolayısıyla adı kullanıldığında yararlıdır develop. Başka birinin paketini kuruyorsanız,install


24

Kullanıcıların developyöntemi kullanırken faydalı bulabileceği başka bir şey de --usersudo olmadan yükleme seçeneğidir. Ör:

python setup.py develop --user

onun yerine

sudo python setup.py develop

11
IIUC asla setup.py developsisteminizde olmamalı , bu sadece bir sanal ortamda anlamlıdır.
dividebyzero

2
@dividebyzero Yani python setup.py develop --userdoğru anlarsam, her zaman kullanmak gerekir demek istiyorsun ? Ayrıca, paketin nerede kurulduğunu bana söyler misiniz python setup.py develop --user? Teşekkürler!
ROBOT AI

2
Bence --userev hesabında bir dizinde kuracak ve sisteminizdeki diğer kullanıcıları etkilemez. Bu develop, her şeyi kopyalamak yerine proje kaynak dizininize bağlantılar kuracaktır. develop --usertamam olmalı ve developbir sanal ortamda da olmalıdır . Yalnızca developgerçek sistem gariptir, çünkü proje kaynak kodunun kişisel kopyasında projeye işaret eden bir şey kullanan başka kullanıcılarınız olabilir.
dividebyzero

4
Birçok (en çok?) Kişi çok kullanıcılı sistemlerde çalışmıyor
17'de

1
@boatcoder, Mac ve Linux (ve Windows) çoklu kullanıcı özellikli sistemler olabilir, ancak büyük olasılıkla geliştirici masaüstünün tek (gerçek) kullanıcı hesabıdır ve inanıyorum ki bu yeni anlamına geliyordu.
MestreLion
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.