Her programlama ihtiyacı için 12 piton

Yazılım geliştirme için Python'u seçtiğinizde, her tür programlama ihtiyacını karşılayan zengin paketlere sahip büyük bir dil ekosistemi seçersiniz. Ancak, GUI geliştirmeden makine öğrenimine kadar her şey için kitaplıklara ek olarak, bir dizi Python çalışma zamanından da seçim yapabilirsiniz - ve bu çalışma zamanlarından bazıları, elinizdeki kullanım durumuna diğerlerinden daha uygun olabilir.

Standart uygulamadan (CPython) hız için optimize edilmiş sürümlere (PyPy), özel kullanım durumlarına (Anaconda, ActivePython), farklı dil çalışma zamanlarına (Jython, IronPython) ve hatta kesme için Python dağıtımlarının kısa bir turunu burada bulabilirsiniz. kenar deneyleri (PyCopy, MesaPy).

CPython

CPython, diğer tüm Python enkarnasyonlarının baktığı standart sürüm olan Python'un referans uygulamasıdır. CPython, adından da anlaşılacağı gibi C ile yazılmıştır ve Python dili ile ilgili tüm üst düzey kararlardan sorumlu olan aynı çekirdek insan grubu tarafından üretilir.

CPython kullanım durumları

CPython, Python'un referans uygulaması olduğundan, optimizasyonları açısından en muhafazakar olanıdır. Bu tasarım gereğidir. Python'un bakımcıları, CPython'un mevcut Python'un en kapsamlı ve standartlaştırılmış uygulaması olmasını istiyor.

Python standartlarına uyumluluk ve uyum, ham performanstan ve diğer endişelerden daha önemli olduğunda CPython en iyi seçiminizdir. CPython, Python ile en temel enkarnasyonunda çalışmak isteyen ve belirli kolaylıklardan vazgeçmeye istekli olan uzmanlar için de yararlıdır. 

Örneğin, CPython ile sanal ortamlar kurmak için biraz daha kaldırmanız gerekir. Diğer dağıtımlar (özellikle Anaconda) çalışma alanı kurulumunda daha fazla otomasyon sağlar.

CPython sınırlamaları

CPython, Python'un diğer sürümlerinde bulunan performans optimizasyonlarına sahip değildir. Performans adına yerel JIT (tam zamanında) derleyicisi, hızlandırılmış matematik kitaplıkları ve üçüncü taraf eklemeler yoktur. Bunların hepsi kendi başınıza ekleyebileceğiniz şeylerdir, ancak paketlenmemişlerdir. Yine, tüm bunlar maksimum uyumluluğu sağlamak ve CPython'un bir referans uygulama olarak hizmet etmesine izin vermek için tasarım gereğidir, ancak bu, herhangi bir performans optimizasyonunun geliştiriciye bağlı olduğu anlamına gelir.

Ayrıca, CPython, Python ile çalışmak için yalnızca bir temel araç seti sağlar. Örneğin pip paket yöneticisi, Python'un yerel PyPI paket deposundan paketler alır ve yükler. Pip, geliştirici tarafından sağlanıyorlarsa önceden derlenmiş ikili dosyaları (tekerlek dağıtım biçimi aracılığıyla) bile kuracaktır, ancak paketlerin PyPI dışında sahip olabileceği herhangi bir bağımlılığı kurmayacaktır . 

İlgili video: Python programlamayı nasıl kolaylaştırır?

BT için mükemmel olan Python, sistem otomasyonundan makine öğrenimi gibi son teknoloji alanlarda çalışmaya kadar pek çok işi basitleştirir.

Anaconda Python

Anaconda, Inc. (eski adıyla Continuum Analytics) tarafından üretilen Anaconda, ticari bir sağlayıcı tarafından desteklenen bir dağıtıma ve işletmeler için destek planlarına ihtiyaç duyan Python geliştiricileri için tasarlanmıştır. Anaconda Python için başlıca kullanım örnekleri matematik, istatistik, mühendislik, veri analizi, makine öğrenimi ve ilgili uygulamalardır.

Anaconda Python kullanım durumları

Anaconda, ticari ve bilimsel Python çalışmalarında kullanılan en yaygın kitaplıkların çoğunu bir araya getirir - SciPy, NumPy, Numba, vb. - ve bunların çoğunu özel bir paket hazırlama sistemi aracılığıyla erişilebilir hale getirir.

Anaconda, tüm bu parçaları nasıl entegre ettiği konusunda diğer dağıtımlardan farklıdır. Anaconda kurulduğunda, Anaconda ortamının her yönünü uygun bir GUI aracılığıyla erişilebilir kılan bir masaüstü uygulaması — Anaconda Navigator — sağlar. Bileşenleri bulmak, güncel tutmak ve onlarla çalışmak, Anaconda ile CPython'dan çok daha kolaydır.

Diğer bir nimet, Anaconda'nın belirli bir paket için gerekli olmaları durumunda bileşenleri Python ekosisteminin dışından ele alma şeklidir. condaPaket yöneticisi, kolları Python paketleri ve üçüncü taraf, dış yazılım gereksinimleri hem yükleme, Anaconda için yarattı.

Anaconda Python sınırlamaları

Anaconda çok sayıda kullanışlı kitaplık içerdiğinden ve yalnızca birkaç tuşa basarak daha da fazlasını yükleyebildiğinden, Anaconda kurulumunun boyutu CPython'dan çok daha büyük olabilir. Temel bir CPython kurulumu yaklaşık 100MB çalışır; Anaconda kurulumları gigabayt boyutuna kadar büyüyebilir. Bu, kaynak kısıtlamalarının olduğu durumlarda bir sorun olabilir.

Anaconda'nın ayak izini azaltmanın bir yolu, Anaconda'nın yalnızca kalkmak ve çalıştırmak için gereken mutlak minimum parçayı içeren soyulmuş bir sürümü olan Miniconda'yı kurmaktır. Ardından, her bir parçanın ne kadar yer kapladığına dikkat ederek, uygun gördüğünüz şekilde Miniconda'ya paketler ekleyebilirsiniz.

ActivePython

Anaconda gibi, ActivePython da kâr amacı gütmeyen bir şirket tarafından oluşturulur ve sürdürülür - bu durumda, çok dilli Komodo IDE ile birlikte bir dizi dil çalışma zamanını pazarlayan ActiveState.

ActivePython kullanım durumları

ActivePython, kurumsal kullanıcıları ve veri bilimcilerini hedeflemektedir - Python'u kullanmak isteyen ancak bir Python kurulumunu bir araya getirmek ve yönetmek için çok fazla çaba harcamak istemeyen kişiler. ActivePython, Python'un normal pippaket yöneticisini kullanır , ancak Intel Math Kernel Library gibi üçüncü taraf bağımlılıkları olan bazı ortak kitaplıkların yanı sıra doğrulanmış paketler olarak birkaç yüz ortak kitaplık sağlar.

ActivePython sınırlamaları

ActivePython'un dış bağımlılıkları olan paketleri işleme yaklaşımının olası bir dezavantajı vardır. Karmaşık bağımlılıkları olan bir projenin daha yeni bir sürümüne yükseltmek istiyorsanız (örneğin, TensorFlow), ActivePython kurulumunuzu da yükseltmeniz gerekecektir. Geliştirmenin bir projenin belirli bir sürümüne bağlı olma eğiliminde olduğu ortamlarda, bu daha az sorun olur. Ancak geliştirmenin en son sürümleri izleme eğiliminde olduğu ortamlarda bir sorun oluşturabilir.

PyPy

CPython yorumlayıcısının yerini alan PyPy, Python programlarının yürütülmesini hızlandırmak için tam zamanında (JIT) derleme kullanır. Gerçekleştirilen göreve bağlı olarak, performans kazançları dramatik olabilir. 

PyPy kullanım durumları

Genel olarak Python ve özellikle CPython ile ilgili yaygın bir şikayet hızdır. Varsayılan olarak Python, C'den birçok kez, bazen yüzlerce kez daha yavaş çalışır. PyPy JIT, Python kodunu makine diline derler ve CPython'a göre ortalama 7,7 kat hızlanma sağlar. Bazı görevler 50 kat daha hızlı çalışır. 

En iyi yanı, geliştiricinin bu kazanımların kilidini açmak için çok az çaba göstermesi veya hiç çaba göstermemesidir. PyPy için CPython'u değiştirin ve büyük ölçüde işiniz bitti.

PyPy sınırlamaları

PyPy her zaman "saf" Python uygulamalarıyla en iyi performansı göstermiştir. NumPy gibi C kütüphaneleri ile arayüz oluşturan Python paketleri, PyPy'nin CPython'un yerel ikili arayüzlerini taklit etme şekli nedeniyle başarılı olamadı. Ancak zamanla, PyPy'nin geliştiricileri bu sorunu ortadan kaldırdılar ve PyPy'yi C uzantılarına bağlı Python paketlerinin çoğuyla çok daha uyumlu hale getirdi. Kısacası, C uzantıları için destek hala sınırlıdır, ancak eskisinden çok daha azdır.

PyPy'nin bir başka olası dezavantajı, çalışma zamanının boyutudur. Standart kitaplık hariç Windows'daki çekirdek CPython çalışma zamanı 4MB civarında, PyPy çalışma zamanı ise 32MB civarında. PyPy'nin Python'un 2.x dalını uzun süredir vurguladığını da unutmayın, bu nedenle, örneğin, PyPy for Python 3.x şu anda Windows için yalnızca 32 bit beta test sürümünde mevcuttur. (PyPy, Linux ve MacOS için Python 2.x ve 3.x için 64 bit sürümlerde mevcuttur.)

Jython

JVM (Java Virtual Machine), Java'nın yanı sıra pek çok dil için çalışma zamanı görevi görür. Uzun liste, Jython projesi aracılığıyla Groovy, Scala, Clojure, Kotlin ve evet Python içerir.

Jython kullanım durumları

Jython, Python 2.x kodunu JVM bayt koduna derler ve ortaya çıkan programı JVM üzerinde çalıştırır. Bazı durumlarda Jython ile derlenmiş bir program CPython muadilinden daha hızlı çalışacaktır, ancak her zaman değil.

Jython'un sağladığı en büyük avantaj, Java ekosisteminin geri kalanıyla doğrudan birlikte çalışabilirliktir. Java, Python'dan daha yaygın olarak kullanılmaktadır. Python'u JVM'de çalıştırmak, Python geliştiricilerinin, başka türlü kullanamayacakları muazzam bir kitaplık ve çerçeve ekosisteminden yararlanmasına olanak tanır. Aynı şekilde Jython, Java geliştiricilerinin Python kitaplıklarını kullanmasına izin verir. 

Jython sınırlamaları

Jython'un en büyük dezavantajı, Python'un yalnızca 2.x dalını desteklemesidir. Python 3.x desteği geliştirme aşamasındadır ancak bir süredir desteklenmektedir. Şimdiye kadar hiçbir şey yayınlanmadı.

Jython, Python'u JVM'ye getirirken, Python'u Android'e getirmediğini de unutmayın. Şu anda Jython'dan Android'e uygun bir bağlantı noktası olmadığından, Jython Android uygulamaları geliştirmek için kullanılamaz.

IronPython

Jython, JVM'de Python'un bir uygulaması olduğu gibi, IronPython da .Net çalışma zamanında veya CLR'de (Ortak Dil Çalışma Zamanı) Python'un bir uygulamasıdır. IronPython, Python programlarının CPython'da yaptıklarıyla aynı derecede dinamizmle çalışmasını sağlamak için CLR'nin DLR'sini (Dinamik Dil Çalışma Zamanı) kullanır.

IronPython kullanım durumları

Jython gibi, IronPython da bir köprüdür. En büyük kullanım durumu, Python ve .Net evreni arasındaki birlikte çalışabilirliktir. Mevcut .Net derlemeleri, Python'un yerel içe aktarma ve nesne işleme sözdizimi kullanılarak IronPython programlarına yüklenebilir. IronPython kodunu bir derlemede derlemek ve olduğu gibi çalıştırmak veya başka dillerden çağırmak da mümkündür. Ancak, derlemedeki MSIL'e (Microsoft Intermediate Language), Common Language Specification ile uyumlu olmadığı için diğer .Net dillerinden doğrudan erişilemeyeceğini unutmayın.

IronPython sınırlamaları

Jython gibi, IronPython da şu anda yalnızca Python 2.x'i desteklemektedir. Ancak, bir IronPython 3.x uygulaması oluşturma çalışmaları devam etmektedir.

WinPython

Adından da anlaşılacağı gibi WinPython, özellikle Microsoft Windows kullanıcıları için oluşturulmuş bir Python dağıtımıdır. CPython'un Windows için önceki sürümleri iyi tasarlanmamıştı ve Windows kullanıcılarının Python ekosisteminden tam anlamıyla yararlanmaları zordu. CPython'un Windows sürümü zamanla gelişti, ancak WinPython hala CPython'da bulunmayan birçok şeyi sunuyor.

WinPython kullanım durumları

WinPython'un ana cazibesi, Python'un kendi kendine yeten bir sürümü olmasıdır. Çalıştığı makineye kurulması gerekmez; sadece bir dizine açılması gerekiyor. Bu, WinPython'u, yazılımın belirli bir sisteme yüklenemediği durumlarda, önceden yapılandırılmış bir Python çalışma zamanının üzerinde çalışacak uygulamalarla birlikte dağıtılması gereken senaryolarda veya Python'un birden çok sürümünün yan yana çalıştırılması gerektiğinde yararlı hale getirir. birbirine karışmadan.

WinPython ayrıca bir dizi veri bilimi odaklı paketi (NumPy, Pandas, SciPy, Matplotlib, vb.) Bir araya getirir, böylece ek kurulum adımları olmadan hemen kullanılabilirler. Ayrıca bir C / C ++ derleyicisi de dahil edilmiştir, çünkü birçok Windows makinesinde bir tane dahil değildir ve birçok Python uzantısı bunu gerektirir veya kullanabilir.

WinPython sınırlamaları

WinPython'un bir sınırlaması, bazı kullanım durumları için varsayılan olarak çok fazla şey içermesidir. Bunu düzeltmek için, WinPython'un yaratıcıları her WinPython sürümünün yalnızca mümkün olan en az ürünün kurulumunu içeren bir "sıfır" sürümünü sağlar. Python'un kendi piparacıyla veya WinPython'un WPPM aracıyla daha fazla paket daha sonra eklenebilir .

Python Taşınabilir

Python Portable, bağımsız bir pakette CPython çalışma zamanıdır. Benzer şekilde kendi kendine yeten uygulamaların PortableDevApps koleksiyonunun izniyle gelir.

Python Portable kullanım durumları

WinPython gibi, Python Portable da bilimsel hesaplama için bir dizi paket içerir — Matplotlib, Numba, SymPy, SciPy, Cython ve diğerleri. Ayrıca WinPython gibi, Python Portable da Windows ana bilgisayarına resmi olarak kurulmasına gerek kalmadan çalışır; herhangi bir dizinde veya çıkarılabilir bir sürücüde yaşayabilir. Ayrıca Spyder IDE ve Python'un pip paket yöneticisi de dahildir, böylece gerektiğinde paketleri ekleyebilir, değiştirebilir veya kaldırabilirsiniz.

Python Portable sınırlamaları

WinPython'dan farklı olarak, Python Portable bir C / C ++ derleyicisi içermez. Cython ile yazılan (ve dolayısıyla C'ye derlenen) kodu kullanmak için bir C derleyicisi sağlamanız gerekir.

Deneysel Python dağıtımları

Bu dağıtımlar, Python'da önemli değişiklikler yapar - ya tamamen yeni bir şey için başlangıç ​​noktası olarak Python'u kullandıkları ya da standart Python'da stratejik değişiklikler yaptıkları için. Genel olarak, bu Pythonlar henüz üretim kullanımı için tavsiye edilmiyor. 

Öngörülebilir bir gelecek için bir Python 2.x kod tabanı ile yaşıyorsanız, Python 2.x'i canlı tutan deneysel Python dağıtımları hakkındaki makalemize göz atmak isteyebilirsiniz.

MicroPython

MicroPython, mikro denetleyiciler gibi son derece düşük kaliteli donanımlarda çalışabilen minimal bir Python dil alt kümesi sağlar. MicroPython, bazı farklılıklarla Python 3.4'ü uygular. Python'u biliyorsanız MicroPython kodu yazmak kolaydır, ancak mevcut kod olduğu gibi çalışmayabilir.

Pycopy