Apakah ada perbedaan yang signifikan antara
pip install -e /path/to/mypackage
dan varian setuptools?
python /path/to/mypackage/setup.py develop
python
pip
setuptools
PeterE
sumber
sumber
Jawaban:
Cobalah untuk menghindari panggilan
setup.py
langsung, itu tidak akan memberi tahu pip bahwa Anda telah menginstal paket Anda.Dengan
pip install -e
:Lebih lanjut: docs
Baca juga dokumen setuptools .
sumber
Satu lagi perbedaan:
pip install -e
menggunakan roda sementarapython setup.py develop
tidak menggunakannya.
Dengan
install
, Anda dapat mencapai perilaku yang sama dengan menggunakanpip install -e /path/to/package --no-use-wheel
Info lebih lanjut tentang roda: roda python
sumber
--no-use-wheel
mendukung--no-binary :all:
Perbedaan lain yang dapat mendukung
pip install -e
adalah bahwa jika proyek Anda memiliki dependensi diinstall_requires
dalamsetup.py
, kemudianpip install -e .
menginstal dependensi dengan pip, sedangkanpython setup.py develop
dapat menginstal denganeasy_install
, dan dapat menyebabkan masalah re: 'telur-info' seperti yang disebutkan di atas. Ketikainstall-requires
digunakandependency_links
dengan URL git khusus, dengan pengidentifikasi telur terlampir, ini bisa sangat menjengkelkan.sumber
pip install -e .
, itu pada dasarnya membuat symlink di direktori paket situs Python yang relevan untuk menunjuk ke copy pekerjaan Anda. Karena perubahan kode dilakukan pada copy yang berfungsi, itu langsung tercermin dalam versi "diinstal", jadi Anda tidak perlu menjalankan kembali perintah instalasi saat Anda pergi. Ini terutama berguna untuk pengembangan dalam repositori yang mewakili paket yang dapat diinstal, tetapi juga dapat berguna untuk misalnya menulis beberapa kumpulan modul dengan hanya impor absolut, dll.Namun perbedaan lain: ketika Anda menjalankan
python setup.py develop
untuk versi yang dianggap sebagai pra-rilis (mungkin karena Anda menjalankannya dari klon git ketika tidak memeriksa rilis), maka Anda akan memungkinkan instalasi pra-rilis dependensi Anda . Di sisi lain, denganpip install --editable
Anda harus lulus--pre
secara eksplisit jika Anda ingin pra-rilis ini.(Lihat log CI dengan pra-rilis yang tidak sengaja digunakan dan bandingkan dengan bangunan tetap di sini .)
sumber