Apa perbedaan antara pip dan conda?

723

Saya tahu pipadalah manajer paket untuk paket python. Namun, saya melihat instalasi di situs web IPython menggunakan condauntuk menginstal IPython.

Bisakah saya menggunakan pipuntuk menginstal IPython? Mengapa saya harus menggunakan condasebagai manajer paket python lain ketika saya sudah punya pip?

Apa perbedaan antara pipdan conda?

lazywei
sumber
Dengan hati-hati membaca halaman instal Anda akan melihat instruksi lengkap untuk menginstal dengan pip dan bahwa conda/ enpgkditargetkan pada new users who want to get up and running with minimal effort: kanopi / anaconda adalah lingkungan mandiri, yang tidak mengganggu sistem python (seperti venv tetapi lebih kuat). BTW IPyhton, bukan iPython (huruf besar I)
Matt
3
Satu perbedaan adalah bahwa lebih banyak hal dapat diinstal oleh pip daripada oleh conda: pip dapat menginstal apapun dari pypi dalam satu perintah. conda membutuhkan tiga perintah: skeleton, build, install, dan mungkin lebih jika itu tidak berfungsi. pip dapat menginstal apa saja dari github atau sumber dalam satu perintah. conda membutuhkan penulisan "resep", yang tidak mudah, terutama karena dokumentasi sepertinya selalu salah / ketinggalan jaman.
endolith
5
Pertanyaan terkait: Apa KEUNTUNGAN dari pip over conda? Saya melihat banyak advokasi Anaconda di bawah, tetapi tidak ada untuk pip. Mengapa pip masih standar, jika anaconda begitu hebat?
Brian Postow
24
Saya menemukan kutipan ini mencerahkan: " Pip adalah manajer paket, dan Virtualenv adalah manajer lingkungan. Conda adalah keduanya." ( ref. )
Atcold
1
Pengamatan: Saya dulu berpikir conda tersirat mengunduh jutaan paket, tetapi ini sepertinya tidak lagi benar: Anda dapat menginstal miniconda, yang pada dasarnya tampaknya hanya manajer paket, conda.io/docs/install/quick.html
Hugh Perkins

Jawaban:

521

Mengutip dari blog Conda :

Sudah lama terlibat dalam dunia python, kita semua mengetahui pip, easy_install, dan virtualenv, tetapi alat-alat ini tidak memenuhi semua persyaratan khusus kami. Masalah utama adalah bahwa mereka berfokus pada Python, mengabaikan dependensi pustaka non-Python, seperti HDF5, MKL, LLVM, dll., Yang tidak memiliki setup.py dalam kode sumber mereka dan juga tidak menginstal file ke situs Python direktori -paket.

Jadi Conda adalah alat pengemas dan pemasang yang bertujuan untuk melakukan lebih dari apa yang pipdilakukannya; menangani dependensi pustaka di luar paket Python serta paket Python itu sendiri. Conda juga menciptakan lingkungan virtual, seperti virtualenvhalnya.

Dengan demikian, Conda harus dibandingkan dengan Buildout mungkin, alat lain yang memungkinkan Anda menangani tugas instalasi Python dan non-Python.

Karena Conda memperkenalkan format kemasan baru, Anda tidak dapat menggunakan pipdan Conda secara bergantian; piptidak dapat menginstal format paket Conda. Anda dapat menggunakan dua alat secara berdampingan (dengan menginstal pipdengan conda install pip) tetapi keduanya tidak saling beroperasi.

Sejak menulis jawaban ini, Anaconda telah menerbitkan halaman baru tentang Understanding Conda dan Pip , yang menggemakan ini juga:

Ini menyoroti perbedaan utama antara conda dan pip. Pip menginstal paket Python sedangkan conda menginstal paket yang mungkin berisi perangkat lunak yang ditulis dalam bahasa apa pun. Misalnya, sebelum menggunakan pip, interpreter Python harus diinstal melalui manajer paket sistem atau dengan mengunduh dan menjalankan installer. Conda di sisi lain dapat menginstal paket Python serta juru bahasa Python secara langsung.

dan selanjutnya

Kadang-kadang paket diperlukan yang tidak tersedia sebagai paket konda tetapi tersedia di PyPI dan dapat diinstal dengan pip. Dalam kasus ini, masuk akal untuk mencoba menggunakan conda dan pip.

Martijn Pieters
sumber
18
Terima kasih atas penjelasan anda Saya masih bingung, bagaimanapun, dengan apakah Conda dapat menggantikan pip? yaitu, dapatkah Conda melakukan semua yang dapat dilakukan pip?
lazywei
10
@ Lazywei: Saya rasa itu tidak bisa; itu tidak terlihat seperti Conda mendukung format arsip roda, misalnya. Mereka memiliki tujuan yang berbeda.
Martijn Pieters
45
@naught101 "Cukup buat resep" Itu tidak semudah mengetik pip install.
endolith
23
Bisakah beberapa menjelaskan kepada saya apa yang akan terjadi jika Anda menggunakan pip dan conda untuk menginstal paket yang sama kecuali dengan versi yang berbeda, yang akan digunakan python ketika Anda mengimpornya?
Lance Ruo Zhang
4
@ jrh: Anda tidak dapat menginstal beberapa versi dari paket yang sama secara berdampingan saat menggunakan manajer paket OS, bukan sebagai fitur inti. Conda mengelola lingkungan , masing-masing dengan campuran paket diinstal sendiri pada versi tertentu. Jadi proyek A, yang telah dikembangkan beberapa waktu lalu, masih dapat berpegang teguh pada versi lama perpustakaan Foo (tidak ada sumber daya yang tersedia untuk memutakhirkan proyek agar bekerja dengan rilis yang lebih baru) sementara proyek B membutuhkan versi terbaru dari perpustakaan yang sama.
Martijn Pieters
246

Berikut ini adalah ikhtisar singkat:

pip

  • Paket python saja.
  • Kompilasi semuanya dari sumber. EDIT: pip sekarang menginstal roda biner, jika tersedia.
  • Diberkati oleh komunitas inti Python (yaitu, Python 3.4+ termasuk kode yang secara otomatis bootstraps pip).

conda

  • Agnostik Python. Fokus utama dari paket yang ada adalah untuk Python, dan memang Conda itu sendiri ditulis dalam Python, tetapi Anda juga dapat memiliki paket Conda untuk pustaka C, atau paket R, atau benar-benar apa saja.
  • Menginstal binari. Ada alat yang disebut conda buildyang membangun paket dari sumber, tetapi conda installitu sendiri menginstal hal-hal dari paket Conda yang sudah dibangun.
  • Luar. Conda adalah manajer paket Anaconda, distribusi Python yang disediakan oleh Continuum Analytics, tetapi juga dapat digunakan di luar Anaconda. Anda dapat menggunakannya dengan instalasi Python yang ada dengan menginstalnya (meskipun ini tidak disarankan kecuali Anda memiliki alasan yang baik untuk menggunakan instalasi yang ada).

Dalam kedua kasus:

  • Ditulis dengan Python
  • Sumber terbuka (Conda adalah BSD dan pip adalah MIT)

Dua poin pertama Conda benar-benar membuatnya lebih menguntungkan daripada banyak paket. Karena pip menginstal dari sumber, akan sangat menyakitkan untuk menginstal hal-hal dengan itu jika Anda tidak dapat mengkompilasi kode sumber (ini terutama benar pada Windows, tetapi bahkan bisa benar di Linux jika paket memiliki beberapa C atau FORTRAN perpustakaan yang sulit dependensi). Conda menginstal dari biner, yang berarti bahwa seseorang (misalnya, Continuum) telah melakukan kerja keras mengkompilasi paket, sehingga instalasi mudah.

Ada juga beberapa perbedaan jika Anda tertarik untuk membangun paket Anda sendiri. Sebagai contoh, pip dibangun di atas setuptools, sedangkan Conda menggunakan formatnya sendiri, yang memiliki beberapa kelebihan (seperti statis, dan sekali lagi, Python agnostic).

penilai
sumber
21
pip tidak lagi membangun semuanya dari sumber. Jika roda tersedia, pip install --use-wheel <package>akan menginstal paket bawaan. Lihat di sini: wheel.readthedocs.org/en/latest . Namun pengalaman pribadi saya dengan roda adalah bahwa begitu sedikit paket roda ilmiah yang tersedia yang murni bersifat akademis. Dan tentu saja instalasi pip sebagian besar tidak berfungsi baik di windows jika lingkungan build Anda tidak diatur dengan benar. Jadi saat ini, conda ftw.
Caleb Hattingh
4
Roda masih baru, dan tidak digunakan secara default, jadi tidak mengherankan bahwa belum banyak. Roda masih masuk ke dalam kategori "spesifik Python", meskipun, artinya bisa saja cocok untuk paket non-Python, atau paket Python yang bergantung pada paket non-Python.
penanggung jawab
4
Saya harus mengundurkan diri ini: poin kedua hanyalah catatan sejarah sekarang, tetapi Anda lanjutkan juga nanti. Perbedaan utama hari ini adalah bahwa pip adalah manajer paket sementara conda lebih dari manajer lingkungan.
Shep
9
Memang benar pip dapat dikompilasi dari sumber tetapi ini menjadi semakin jarang karena semakin banyak paket pindah ke roda: hari ini saya dapat menginstal sebagian besar dari apa yang saya butuhkan dalam beberapa detik dengan pip. Jadi bukan karena jawaban ini salah, itu hanya menjadi sedikit usang karena pip telah meningkat cukup banyak dalam beberapa tahun terakhir
Shep
4
Tidak pernah benar bahwa pip hanya dapat menginstal dari sumber. Sebelum roda kami memiliki telur sebagai format instalasi biner default dan format distribusi yang disarankan untuk instalasi Windows, dan pip akan (dan masih akan) menginstal telur jika itu pilihan terbaik yang tersedia.
Martijn Pieters
96

Jawaban lain memberikan deskripsi yang adil tentang perinciannya, tetapi saya ingin menyoroti beberapa poin tingkat tinggi.

pip adalah manajer paket yang memfasilitasi instalasi, peningkatan, dan penghapusan paket python . Ini juga berfungsi dengan lingkungan python virtual .

conda adalah manajer paket untuk setiap perangkat lunak (instalasi, peningkatan dan penghapusan instalasi). Ini juga berfungsi dengan lingkungan sistem virtual .

Salah satu tujuan dengan desain conda adalah untuk memfasilitasi manajemen paket untuk seluruh tumpukan perangkat lunak yang diperlukan oleh pengguna, di mana satu atau lebih versi python mungkin hanya sebagian kecil. Ini termasuk perpustakaan tingkat rendah, seperti aljabar linier, kompiler, seperti mingw pada Windows, editor, alat kontrol versi seperti Hg dan Git, atau apa pun yang memerlukan distribusi dan manajemen .

Untuk manajemen versi, pip memungkinkan Anda untuk beralih di antara dan mengelola beberapa lingkungan python .

Conda memungkinkan Anda untuk beralih di antara dan mengelola beberapa lingkungan tujuan umum di mana banyak hal lain dapat bervariasi dalam jumlah versi, seperti C-libraries, atau compiler, atau test-suites, atau mesin database dan sebagainya.

Conda bukan Windows-sentris, tetapi pada Windows itu sejauh ini merupakan solusi unggul yang tersedia saat paket ilmiah kompleks yang membutuhkan kompilasi harus diinstal dan dikelola.

Saya ingin menangis ketika saya memikirkan berapa banyak waktu saya yang hilang ketika mencoba mengkompilasi banyak paket ini melalui pip pada Windows, atau debug gagal pip install sesi ketika kompilasi diperlukan.

Sebagai titik akhir, Continuum Analytics juga meng-host (gratis) binstar.org (sekarang disebut anaconda.org ) untuk memungkinkan pengembang paket reguler untuk membuat tumpukan perangkat lunak kustom (buatan!) Mereka sendiri yang bisa didapatkan oleh pengguna paket conda install.

Caleb Hattingh
sumber
4
Sesuai poin terakhir Anda, proyek conda-forge pihak ketiga dengan cepat menjadi pendekatan standar industri untuk menerbitkan paket Anaconda. Kami baru-baru ini menerbitkan beberapa paket yang dihosting oleh conda-forge untuk simulator biologi multiphysics kami - dan tidak dapat merekomendasikan proses ini dengan cukup. Ada komponen peer review berbasis GitHub untuk mengirimkan resep baru ke conda-forge, tetapi kelebihan dalam hal otomatisasi conda-forge sangat melebihi investasi waktu dimuka. Bam!
Cecil Curry
@ CecilCurry Saya sudah mengimpor Keraskode saya, menginstal anaconda di mac saya dan Keras condadiinstal dan pipdiinstal. Jadi, ketika menjalankan kode saya di terminal, bagaimana saya tahu mana kerasyang sedang diimpor ( pipsatu atau condasatu)?
KPMG
25

Bukan untuk membingungkan Anda lebih lanjut, tetapi Anda juga dapat menggunakan pip dalam lingkungan conda Anda, yang memvalidasi komentar manajer umum vs. python khusus di atas.

conda install -n testenv pip
source activate testenv
pip <pip command>

Anda juga dapat menambahkan pip ke paket default lingkungan apa pun sehingga hadir setiap kali sehingga Anda tidak harus mengikuti cuplikan di atas.

vijay venkatesh
sumber
Saya pikir ini tidak direkomendasikan?
endolith
8
Sangat disarankan untuk menggunakan pip di dalam konda. Lebih baik menginstal menggunakan conda, tetapi untuk paket apa pun yang tidak memiliki conda build, bisa diterima menggunakan pip.
Bradley Kreider
2
nit: sepertinya frasa seperti itu fully supported? fully recommendedmenyiratkan, lebih baik menggunakan pip daripada conda, dalam lingkungan conda, untuk pikiran saya, dan saya tidak yakin itu yang Anda / mereka maksud?
Hugh Perkins
22

Kutipan dari artikel Conda for Data Science ke situs web Continuum:

Conda vs pip

Pemrogram python mungkin akrab dengan pip untuk mengunduh paket dari PyPI dan mengelola persyaratannya. Meskipun, baik conda dan pip adalah manajer paket, mereka sangat berbeda:

  • Pip khusus untuk paket Python dan conda adalah bahasa-agnostik, yang berarti kita dapat menggunakan konda untuk mengelola paket dari bahasa apa pun yang dikompilasi oleh Pip dari sumber dan conda menginstal binari, menghilangkan beban kompilasi
  • Conda menciptakan lingkungan bahasa-agnostik secara native sedangkan pip bergantung pada virtualenv untuk mengelola hanya lingkungan Python. Meskipun disarankan untuk selalu menggunakan paket conda, conda juga termasuk pip, jadi Anda tidak harus memilih di antara keduanya. Misalnya, untuk menginstal paket python yang tidak memiliki paket conda, tetapi tersedia melalui pip, jalankan saja, misalnya:
conda install pip
pip install gensim
CheTesta
sumber
15

Mengutip dari Conda: Mitos dan Kesalahpahaman (deskripsi komprehensif):

...

Mitos # 3: Conda dan pip adalah pesaing langsung

Kenyataan: Conda dan pip melayani tujuan yang berbeda, dan hanya secara langsung bersaing dalam sejumlah kecil tugas: yaitu menginstal paket Python di lingkungan yang terisolasi.

Pip, yang merupakan singkatan dari P ip I nstalls P ackages, adalah manajer paket resmi Python, dan paling umum digunakan untuk menginstal paket yang dipublikasikan pada Python Package Index (PyPI). Baik pip dan PyPI diatur dan didukung oleh Python Packaging Authority (PyPA).

Singkatnya, pip adalah manajer tujuan umum untuk paket Python; conda adalah manajer lingkungan lintas platform-bahasa-agnostik. Untuk pengguna, perbedaan yang paling menonjol mungkin adalah ini: pip menginstal paket python dalam lingkungan apa pun; conda menginstal paket apa pun dalam lingkungan conda. Jika semua yang Anda lakukan adalah menginstal paket Python dalam lingkungan yang terisolasi, conda dan pip + virtualenv sebagian besar dapat dipertukarkan, modulo beberapa perbedaan dalam penanganan ketergantungan dan ketersediaan paket. Dengan lingkungan yang terisolasi maksud saya conda-env atau virtualenv, di mana Anda dapat menginstal paket tanpa memodifikasi instalasi sistem Python Anda.

Bahkan mengesampingkan Mitos # 2, jika kita fokus hanya pada pemasangan paket Python, conda dan pip melayani khalayak yang berbeda dan tujuan yang berbeda. Jika Anda ingin, katakanlah, mengelola paket Python dalam sistem yang ada, instalasi Python, conda tidak dapat membantu Anda: menurut desain, itu hanya dapat menginstal paket dalam lingkungan conda. Jika Anda ingin, katakanlah, bekerja dengan banyak paket Python yang bergantung pada dependensi eksternal (NumPy, SciPy, dan Matplotlib adalah contoh umum), sementara melacak dependensi tersebut dengan cara yang bermakna, pip tidak dapat membantu Anda: dengan desain, itu mengelola paket Python dan hanya paket Python.

Conda dan pip bukan pesaing, melainkan alat yang berfokus pada kelompok pengguna dan pola penggunaan yang berbeda.

sancho.s ReinstateMonicaCellio
sumber
1
Saya tidak yakin ini benar, di luar perspektif penentuan posisi pasar. Sebagai contoh, lihat pytorch, yang menawarkan tiga jenis pemasangan: conda, pip, source, pytorch.org , dan merekomendasikan: conda
Hugh Perkins
2
"Menginstal paket Python di lingkungan yang terisolasi" adalah jenis hal utama yang digunakan oleh kebanyakan pengembang Python.
Nick
@Nick bukan saat pengembang sudah berada di lingkungan virtual 'itu'? Saya pikir pip bekerja di lingkungan virtual dan menginstal paket seolah-olah itu menginstal untuk sistem. Tapi seperti kata sanchos.s, itu hanya menginstal paket python dan tidak merawat perpustakaan yang mendasarinya. tolong perbaiki saya jika ada yang salah.
Chan Kim
12

Untuk pengguna WINDOWS

Situasi alat pengemasan "standar" membaik baru-baru ini:

  • pada pypi sendiri, sekarang ada 48% paket roda pada September. 11th 2015 (naik dari 38% di Mei 2015, 24% di September 2014),

  • format roda sekarang didukung di luar kotak per python 2.7.7 terbaru,

Situasi alat kemasan "standar" + "tweak" juga meningkat:

  • Anda dapat menemukan hampir semua paket ilmiah pada format roda di http://www.lfd.uci.edu/~gohlke/pythonlibs ,

  • proyek mingwpy dapat membawa paket 'kompilasi' suatu hari kepada pengguna windows, memungkinkan untuk menginstal semuanya dari sumber saat dibutuhkan.

Kemasan "Conda" tetap lebih baik untuk pasar yang dilayaninya, dan menyoroti area di mana "standar" harus ditingkatkan.

(juga, spesifikasi ketergantungan multi-upaya, dalam sistem roda standar dan sistem konda, atau buildout, tidak terlalu pythonic, alangkah baiknya jika semua teknik 'inti' pengemasan ini dapat menyatu, melalui semacam PEP)

stonebig
sumber
8

pip adalah manajer paket.

conda adalah manajer paket dan manajer lingkungan.

Detail:

masukkan deskripsi gambar di sini

Referensi

Simba
sumber
2

Bisakah saya menggunakan pip untuk menginstal iPython?

Tentu, keduanya (pendekatan pertama di halaman)

pip install ipython

dan (pendekatan ketiga, kedua adalah conda)

Anda dapat mengunduh IPython secara manual dari GitHub atau PyPI. Untuk menginstal salah satu versi ini, bukalah dan jalankan yang berikut dari direktori sumber tingkat atas menggunakan Terminal:

pip install .

secara resmi direkomendasikan cara untuk menginstal .

Mengapa saya harus menggunakan conda sebagai manajer paket python lain ketika saya sudah memiliki pip?

Seperti yang dikatakan di sini :

Jika Anda memerlukan paket tertentu, mungkin hanya untuk satu proyek, atau jika Anda perlu berbagi proyek dengan orang lain, konda tampaknya lebih sesuai.

Conda melampaui pip in ( YMMV )

  • proyek yang menggunakan alat non-python
  • berbagi dengan kolega
  • beralih antar versi
  • beralih antara proyek dengan versi pustaka yang berbeda

Apa perbedaan antara pip dan conda?

Itu dijawab secara luas oleh orang lain.

serv-inc
sumber
1

pip hanya untuk Python

condahanya untuk Anaconda + paket ilmiah lainnya seperti dependensi R, dll. TIDAK semua orang membutuhkan Anaconda yang sudah dilengkapi dengan Python. Anaconda kebanyakan untuk mereka yang melakukan Machine learning / deep learning dll. Casual Python dev tidak akan menjalankan Anaconda di laptop-nya.

Galapagos
sumber
penjelasan sederhana, tetapi saya diajarkan untuk langsung pergi ke situs web Anaconda dan mengunduh distribusi Python 2.x atau 3.x. Mengapa? > karena berisi semua paket yang dibutuhkan oleh seorang siswa. Numpy, Scipy, matpliotlib, sklearn dll. Inilah mengapa ada celah dalam memahami detail fundamental yang lebih halus. Siswa
Rene Duchamp
Saya tahu ini adalah jawaban lama pada saat ini, tetapi apa yang Anda tulis tentang Conda / Anaconda tampaknya sepenuhnya salah bagi saya.
AMC
0

Saya mungkin telah menemukan satu perbedaan lebih lanjut yang bersifat minor. Saya memiliki lingkungan python saya di bawah /usrdaripada /homeatau apa pun. Untuk menginstalnya, saya harus menggunakansudo install pip . Bagi saya, efek samping yang tidak diinginkan dari sudo install pipsedikit berbeda dari apa yang secara luas dilaporkan di tempat lain: setelah melakukannya, saya harus menjalankan pythondengan sudountuk mengimpor salah satu sudopaket -installed. Saya menyerah dan akhirnya menemukan bahwa saya dapat menggunakan sudo condauntuk menginstal paket ke lingkungan di /usrmana kemudian diimpor secara normal tanpa memerlukan sudoizin python. Saya bahkan digunakan sudo condauntuk memperbaiki yang rusak pipdaripada menggunakan sudo pip uninstall pipatau sudo pip --upgrade install pip.

JB
sumber