Saya baru-baru ini menemukan Conda setelah saya mengalami kesulitan menginstal SciPy, khususnya pada aplikasi Heroku yang saya kembangkan.
Dengan Conda Anda membuat lingkungan, sangat mirip dengan apa yang dilakukan virtualenv . Pertanyaan saya adalah:
- Jika saya menggunakan Conda, apakah akan menggantikan kebutuhan virtualenv? Jika tidak, bagaimana saya menggunakan keduanya bersama-sama? Apakah saya menginstal virtualenv di Conda, atau Conda di virtualenv?
- Apakah saya masih perlu menggunakan pip? Jika demikian, apakah saya masih dapat menginstal paket dengan pip di lingkungan yang terisolasi?
Jawaban:
Conda menggantikan virtualenv. Menurut saya itu lebih baik. Ini tidak terbatas pada Python tetapi dapat digunakan untuk bahasa lain juga. Dalam pengalaman saya, ini memberikan pengalaman yang jauh lebih lancar, terutama untuk paket ilmiah. Pertama kali saya menginstal MayaVi dengan benar di Mac adalah dengan
conda
.Anda masih bisa menggunakan
pip
. Bahkan,conda
instalpip
di setiap lingkungan baru. Ia tahu tentang paket pip-instal.Sebagai contoh:
daftar semua paket yang diinstal di lingkungan Anda saat ini. Paket-paket yang diinstal-konda muncul seperti ini:
dan yang diinstal melalui
pip
memiliki<pip>
penanda:sumber
<pip>
menunjukkan bahwa itu dipasang dengan pip jika tidak diinstal dengan conda.Jawaban singkatnya adalah, Anda hanya perlu konda.
Conda secara efektif menggabungkan fungsi pip dan virtualenv dalam satu paket, sehingga Anda tidak perlu virtualenv jika Anda menggunakan conda.
Anda akan terkejut betapa banyak paket yang mendukung conda. Jika tidak cukup, Anda dapat menggunakan pip di bawah conda.
Berikut ini tautan ke halaman conda yang membandingkan conda, pip, dan virtualenv:
https://docs.conda.io/projects/conda/en/latest/commands.html#conda-vs-pip-vs-virtualenv-commands .
sumber
Lingkungan Virtual dan
pip
Saya akan menambahkan bahwa membuat dan menghapus lingkungan conda sederhana dengan Anaconda.
Dalam lingkungan yang diaktifkan , instal paket melalui
conda
ataupip
:Lingkungan ini sangat terkait dengan manajemen paket pip seperti conda , sehingga mudah untuk membuat lingkungan dan menginstal paket Python dan non-Python.
Jupyter
Selain itu, menginstal
ipykernel
di lingkungan menambahkan daftar baru di menu dropdown kernel dari notebook Jupyter, memperluas lingkungan yang dapat direproduksi ke notebook. Pada Anaconda 4.1, nbextensions telah ditambahkan , menambahkan ekstensi ke notebook lebih mudah.Keandalan
Dalam pengalaman saya, conda lebih cepat dan lebih dapat diandalkan dalam menginstal perpustakaan besar seperti
numpy
danpandas
. Selain itu, jika Anda ingin mentransfer keadaan lingkungan Anda yang dilestarikan, Anda dapat melakukannya dengan berbagi atau mengkloning env.sumber
Menginstal Conda akan memungkinkan Anda untuk membuat dan menghapus lingkungan python seperti yang Anda inginkan, karena itu memberi Anda fungsionalitas yang sama dengan virtualenv .
Dalam kasus kedua distribusi, Anda dapat membuat pohon sistem file yang terisolasi, tempat Anda dapat menginstal dan menghapus paket python (mungkin, dengan pip) seperti yang Anda inginkan. Yang mungkin berguna jika Anda ingin memiliki versi berbeda dari pustaka yang sama untuk kasus penggunaan yang berbeda atau Anda hanya ingin mencoba beberapa distribusi dan menghapusnya setelah itu menghemat ruang disk Anda.
Perbedaan:
Perjanjian lisensi. Sementara virtualenv berada di bawah lisensi MIT paling liberal , Conda menggunakan lisensi 3 klausa BSD.
Conda menyediakan Anda dengan sistem kontrol paket mereka sendiri. Sistem kontrol paket ini sering menyediakan versi yang telah dikompilasi (untuk sistem paling populer) dari perangkat lunak non-python populer, yang dapat dengan mudah membuat beberapa paket pembelajaran mesin bekerja. Yaitu Anda tidak perlu mengkompilasi kode C / C ++ yang dioptimalkan untuk sistem Anda. Meskipun itu sangat melegakan bagi sebagian besar dari kita, itu mungkin mempengaruhi kinerja perpustakaan seperti itu.
Tidak seperti virtualenv, Conda menduplikasi beberapa pustaka sistem setidaknya pada sistem Linux. Perpustakaan ini dapat keluar dari sinkronisasi yang mengarah ke perilaku program Anda yang tidak konsisten.
Putusan:
Conda sangat bagus dan harus menjadi pilihan default Anda saat memulai dengan pembelajaran mesin. Ini akan menghemat waktu Anda bermain-main dengan gcc dan banyak paket. Namun, Conda tidak menggantikan virtualenv. Ini memperkenalkan beberapa kompleksitas tambahan yang mungkin tidak selalu diinginkan. Itu datang di bawah lisensi yang berbeda. Anda mungkin ingin menghindari penggunaan kondominium pada lingkungan terdistribusi atau perangkat keras HPC.
sumber
conda
perangkat lunak dan perpustakaan yang diinstal. Dan dalam HPC,conda
lebih disukai dalam banyak kasus, sebenarnya itu digunakan oleh Admin HPC untuk menggantikan hal-hal sepertimodule
sistem. Ini memungkinkan perangkat lunak yang diinstal pengguna dan isolasi perangkat lunak yang lebih besar, dua masalah besar pada HPC. Satu-satunya peringatan yang saya alami adalah bahwa banyak sistem file HPC memiliki batasan keras pada jumlah file dalam suatu dir, dan konda menciptakan banyak 1.000 file.Saya menggunakan keduanya dan (pada Jan, 2020) mereka memiliki beberapa perbedaan dangkal yang memungkinkan mereka untuk penggunaan yang berbeda untuk saya. Secara default Conda lebih suka mengelola daftar lingkungan untuk Anda di lokasi pusat, sedangkan virtualenv membuat folder di direktori saat ini. Yang pertama (terpusat) masuk akal jika Anda misalnya melakukan pembelajaran mesin dan hanya memiliki beberapa lingkungan luas yang Anda gunakan di banyak proyek dan ingin melompat ke dalamnya dari mana saja. Yang terakhir (per folder proyek) masuk akal jika Anda melakukan sedikit proyek satu kali yang memiliki set persyaratan lib yang sangat berbeda yang benar-benar milik lebih dari proyek itu sendiri.
Lingkungan kosong yang dibuat Conda adalah sekitar 122MB sedangkan virtualenv adalah sekitar 12MB, jadi itu alasan lain Anda mungkin memilih untuk tidak menyebarkan lingkungan Conda di mana-mana.
Akhirnya, indikasi dangkal lain bahwa Conda lebih suka envs terpusat adalah bahwa (sekali lagi, secara default) jika Anda memang membuat Conda env di folder proyek Anda sendiri dan mengaktifkannya awalan nama yang muncul di shell Anda adalah absolut (terlalu lama) mutlak path ke folder. Anda dapat memperbaikinya dengan memberinya nama, tetapi virtualenv melakukan hal yang benar secara default.
Saya berharap info ini menjadi basi dengan cepat ketika dua manajer paket bersaing untuk mendapatkan dominasi, tetapi ini adalah kompromi dari hari ini :)
sumber
pipenv
?Opsi baru lain dan metode pilihan saya saat ini untuk mendapatkan lingkungan dan berjalan adalah Pipenv
Saat ini alat pengemasan Python yang direkomendasikan secara resmi dari Python.org
sumber
pipenv --two
untuk Python2 dan pipenv --tiga untuk python3Ya,
conda
jauh lebih mudah untuk menginstal daripadavirtualenv
, dan cukup banyak menggantikan yang terakhir.sumber
virtualenv
dengan alat manajemen lingkungan virtual yang lebih umumconda
. Juga, Anaconda hanyalah distribusi Python + yang mencakup alat Conda; pertanyaan (dan jawaban) hanya tentang Conda.Saya bekerja di perusahaan, di belakang beberapa firewall dengan mesin yang saya tidak punya akses admin
Dalam pengalaman saya yang terbatas dengan python (2 tahun) saya telah menemukan beberapa perpustakaan (JayDeBeApi, sasl) yang ketika menginstal melalui pip melemparkan kesalahan kesalahan ketergantungan C ++: diperlukan Microsoft Visual C ++ 14.0. Dapatkan dengan "Microsoft Visual C ++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools
ini dipasang dengan conda, maka sejak saat itu saya mulai bekerja dengan conda env. Namun itu tidak mudah untuk menghentikan conda dari menginstal dependensi di dalam c.programfiles di mana saya tidak memiliki akses tulis.
sumber