Apakah ada perbedaan yang signifikan antara
pip install -e /path/to/mypackage
dan varian setuptools?
python /path/to/mypackage/setup.py develop
Apakah ada perbedaan yang signifikan antara
pip install -e /path/to/mypackage
dan varian setuptools?
python /path/to/mypackage/setup.py develop
Jawaban:
Cobalah untuk menghindari panggilan setup.py
langsung, itu tidak akan memberi tahu pip bahwa Anda telah menginstal paket Anda.
Dengan pip install -e
:
Untuk proyek lokal, direktori "SomeProject.egg-info" dibuat relatif terhadap jalur proyek. Ini adalah satu keuntungan daripada hanya menggunakan
setup.py develop
, yang menciptakan "info telur" secara langsung relatif terhadap direktori kerja saat ini.
Lebih lanjut: docs
Baca juga dokumen setuptools .
Satu lagi perbedaan: pip install -e
menggunakan roda sementara
python setup.py develop
tidak menggunakannya.
Dengan install
, Anda dapat mencapai perilaku yang sama dengan menggunakan
pip install -e /path/to/package --no-use-wheel
Info lebih lanjut tentang roda: roda python
--no-use-wheel
mendukung--no-binary :all:
Perbedaan lain yang dapat mendukung pip install -e
adalah bahwa jika proyek Anda memiliki dependensi di install_requires
dalam setup.py
, kemudian pip install -e .
menginstal dependensi dengan pip, sedangkan python setup.py develop
dapat menginstal dengan easy_install
, dan dapat menyebabkan masalah re: 'telur-info' seperti yang disebutkan di atas. Ketika install-requires
digunakan dependency_links
dengan URL git khusus, dengan pengidentifikasi telur terlampir, ini bisa sangat menjengkelkan.
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, dengan pip 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 .)