Pyenv, virtualenv, anaconda arasındaki fark nedir?


142

Python öğrenmeye çalışan yakut bir programcıyım. Rbenv'den bir kopyala ve yapıştır gibi olduğu için pyenv ile hoş bir aileyim. Pyenv, bir sistemde birden fazla python sürümünün bulunmasına ve ayrıca sistemin hassas kısmına dokunmadan python'un izole edilmesine yardımcı olur.

Her python kurulumunun pip paketi ile geldiğini düşünüyorum. Hala anlamadım, orada bu virtualenv ve anakonda kullanmayı öneren birçok iyi python kütüphanesi var. Hatta pyenv için virtualenv eklentisini bile bulabilirim.

Şimdi bu iki pyenv ve virtualenv'in amacı ile karışıyorum. pyenv içinde daha kötü bir virtualenv eklentisi var.

sorularım:

  • pyenv ve virtualenv arasındaki fark nedir?
  • Hem pyenv hem de virtualenv içinde pip komutunu kullanmanın herhangi bir farkı var mı?
  • Bu pyenv virutalenv ne yapıyor?

örnekle açıklamanız çok takdir edilecektir.



Yanıtlar:


154

Düzenleme: pipBurada da söz etmeye değer condave pipbu konuyla ilgili benzerlikler ve farklılıklar var .

pip: Python Paket Yöneticisi.

  • pipRuby gemkomutunun python eşdeğeri olarak düşünebilirsiniz
  • pip varsayılan olarak python ile birlikte verilmez.
  • Python'u pip'i otomatik olarak kuracak olan homebrew kullanarak kurabilirsiniz:brew install python
  • OSX'in son sürümü varsayılan olarak pip içermiyordu. Mac sisteminizin python sürümüne pip eklemek için şunları yapabilirsiniz:sudo easy_install pip
  • PyPI: Python Paket Dizini'ni kullanarak python paketlerini bulabilir ve yayınlayabilirsiniz
  • Needs.txt dosyası ruby ​​ile karşılaştırılabilir gemfile
  • Bir gereksinimler metin dosyası oluşturmak için, pip freeze > requirements.txt
  • Bu noktada, sistemimize python yükledik ve sisteminize yüklenmiş olan tüm python paketlerinin ana hatlarını belirten bir gereksinim.txt dosyası oluşturduk.

pyenv: Python Sürüm Yöneticisi

  • Dokümanlardan : pyenv, Python'un birden fazla sürümü arasında kolayca geçiş yapmanızı sağlar. Bu basit, göze batmayan ve UNIX'in bir şeyi iyi yapan tek amaçlı araç geleneğini izliyor. Bu proje rbenv ve ruby-build'den çatallanmış ve Python için değiştirilmiştir.
  • Birçok kişi python kullanmakta tereddüt ediyor3 .
  • Farklı python sürümleri kullanmanız gerekiyorsa, pyenvbunu kolayca yönetmenizi sağlar.

virtualenv: Python Çevre Yöneticisi.

  • Dokümanlar'dan : Ele alınan temel sorun bağımlılık ve sürümlerden ve dolaylı olarak izinlerden biridir. LibFoo'nun sürüm 1'i gerektiren bir uygulamanız olduğunu, ancak başka bir uygulamanın sürüm 2'yi gerektirdiğini düşünün. Bu iki uygulamayı da nasıl kullanabilirsiniz? Her şeyi /usr/lib/python2.7/site-packages'e (veya platformunuzun standart konumu ne olursa olsun) yüklerseniz, istemeden yükseltilmemesi gereken bir uygulamayı yükselttiğiniz bir duruma kolayca ulaşabilirsiniz.
  • Bir oluşturmak için virtualenvyeterlidir çağırmak virtualenv ENVnerede, ENVyeni sanal ortam yerleştirmek için bir dizin.
  • Başlamak için virtualenv, yapmanız gerekir source ENV/bin/activate. Kullanmayı durdurmak için arayın deactivate.
  • Etkinleştirdikten sonra virtualenv, bir çalışma alanının tüm paket gereksinimlerini pip install -rproje requirements.txtdosyasıyla çalıştırarak yükleyebilirsiniz .

Anaconda: Paket Yöneticisi + Çevre Yöneticisi + Ek Bilimsel Kütüphaneler.

  • Dokümanlardan : Anaconda 4.2.0, Python'un (2.7.12, 3.4.5 ve / veya 3.5.2) kolay kurulumunu ve NumPy, Pandas içeren 100'den fazla önceden oluşturulmuş ve test edilmiş bilimsel ve analitik Python paketinin güncellemelerini içerir , SciPy, Matplotlib ve IPython ile 620'den fazla paketconda install <packagename>
  • Bir web geliştiricisi olarak Anaconda kullanmadım. Tüm paketler dahil ~ 3GB.
  • Kişisel olarak kullanma deneyimim olmasa da + minicondakullanmaktan daha basit bir seçenek gibi görünen bir zayıflama sürümü var.pipvirtualenv
  • condaPaketleri kurmanıza izin verirken , bu paketler PyPI paketlerinden ayrıdır, bu yüzden yüklemeniz gereken paket türlerine bağlı olarak ek olarak pip kullanmanız gerekebilir.

Ayrıca bakınız:


3
Bu muhtemelen bir yenileme kullanabilir, cf stackoverflow.com/a/49084152/14420
matt wilkie

9
Bu , şu anda Python.org'un resmi olarak tavsiye edilen Python paketleme aracı gibi göründüğü için pipenv'e dahil edilecek şekilde güncellenebilir mi?
Wavesailor

1
Sadece 3GB değerinde bir kitaplık kurmanın sorunu nedir? Tüm bu kütüphaneleri dağıtmak istemezsiniz, ancak yüklü 3GB değerinde kütüphaneniz olması, hepsini dağıtmanız gerektiği anlamına gelmez. Ve bu, bu günlerde az miktarda sabit disk alanı. Şu anda bir anaconda kurulumu kullanıyorum ve ortamlarımı venv ile yönetiyorum, ancak sanal ortamlarım için de conda kullanıp kullanmayacağımı düşünüyordum (venv benim için daha yumuşak bir iş akışı gibi görünüyor).
David

@David Biraz geç kaldım, ama venv'de genişleyebilir misin bana daha yumuşak bir iş akışı gibi görünüyor ?
AMC

1

Basit benzetme:

  • pyenv ~ rbenv
  • pip ~ bundler
  • rvm içinde sanal çevre. Bu paketleyici tarafından doğrudan gemset olmadan yönetilebilir.

Ben python3 kullanmak beri yerleşik python3 adlı sanal ortamda tercih venv . venv basit ve kullanımı kolaydır. Resmi belgelerini okumanızı tavsiye ederim. Doktor kısa ve özlü.

Ruby'de gerçekten sanal bir ortama ihtiyacımız yok çünkü paketçi bununla ilgileniyor. Hem sanal env hem de bundler harika ama farklı konseptleri var ama aynı sorunu çözmeye çalışıyorlar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.