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 -emenggunakan 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 -eadalah bahwa jika proyek Anda memiliki dependensi di install_requiresdalam setup.py, kemudian pip install -e .menginstal dependensi dengan pip, sedangkan python setup.py developdapat menginstal dengan easy_install, dan dapat menyebabkan masalah re: 'telur-info' seperti yang disebutkan di atas. Ketika install-requiresdigunakan dependency_linksdengan 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 developuntuk 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 --editableAnda harus lulus --presecara eksplisit jika Anda ingin pra-rilis ini.
(Lihat log CI dengan pra-rilis yang tidak sengaja digunakan dan bandingkan dengan bangunan tetap di sini .)