12 Pythons за всяка нужда от програмиране

Когато изберете Python за разработване на софтуер, вие избирате голяма езикова екосистема с богатство от пакети, покриващи всякакви нужди от програмиране. Но в допълнение към библиотеките за всичко - от разработка на графичен интерфейс до машинно обучение, можете да избирате и от редица изпълнения на Python - и някои от тези изпълнения може да са по-подходящи за случая на употреба, който имате под ръка, отколкото други.

Ето кратка обиколка на дистрибуциите на Python, от стандартното изпълнение (CPython) до версии, оптимизирани за скорост (PyPy), за специални случаи на употреба (Anaconda, ActivePython), за различни езикови изпълнения (Jython, IronPython) и дори за рязане - ръбово експериментиране (PyCopy, MesaPy).

CPython

CPython е референтната реализация на Python, стандартната версия, към която се стремят всички други въплъщения на Python. CPython е написан на C, както се подразбира от името, и се произвежда от същата основна група хора, отговорни за всички решения от най-високо ниво за езика Python.

CPython случаи на употреба

Тъй като CPython е референтната реализация на Python, той е най-консервативният по отношение на своите оптимизации. Това е по дизайн. Поддръжниците на Python искат CPython да бъде най-широко съвместимата и стандартизирана реализация на Python.

CPython е вашият най-добър избор, когато съвместимостта и съответствието със стандартите на Python са по-важни от суровата производителност и други проблеми. CPython е полезен и за експерта, който иска да работи с Python в неговото най-основно въплъщение и който е готов да се откаже от някои удобства. 

Например, с CPython, трябва да направите малко повече повдигане, за да настроите виртуални среди. Други дистрибуции (по-специално Anaconda) осигуряват повече автоматизация около настройката на работното пространство.

Ограничения на CPython

CPython няма оптимизации на производителността, открити в други издания на Python. Няма роден JIT (точно навреме) компилатор, няма ускорени математически библиотеки и няма добавки на трети страни с цел изпълнение. Това са всички неща, които можете да добавите сами, но те не са в комплект. Отново всичко това е по дизайн, за да се гарантира максимална съвместимост и да се позволи на CPython да служи като референтна реализация, но това означава, че всяка оптимизация на производителността зависи от разработчика.

Освен това CPython предоставя само основен набор от инструменти за работа с Python. Например мениджърът на пакети pip получава и инсталира пакети от собственото хранилище на пакети PyPI на Python. Pip дори ще инсталира предварително компилирани двоични файлове (чрез формата за разпространение на колелата), ако са предоставени от разработчика, но няма да инсталира никакви зависимости, които пакетите могат да имат извън PyPI. 

Свързано видео: Как Python улеснява програмирането

Перфектен за ИТ, Python опростява много видове работа, от автоматизация на системата до работа в авангардни области като машинно обучение.

Anaconda Python

Anaconda, произведена от Anaconda, Inc. (по-рано Continuum Analytics), е предназначена за разработчици на Python, които се нуждаят от дистрибуция, подкрепена от търговски доставчик и с планове за подкрепа за предприятия. Основните случаи на използване на Anaconda Python са математика, статистика, инженеринг, анализ на данни, машинно обучение и свързани приложения.

Случаи на употреба на Anaconda Python

Anaconda обединява много от най-разпространените библиотеки, използвани в търговската и научната работа с Python - SciPy, NumPy, Numba и т.н., и прави много повече от тях достъпни чрез персонализирана система за свързване на пакети.

Anaconda се откроява от другите дистрибуции в това как интегрира всички тези парчета. Когато е инсталирана, Anaconda предлага настолно приложение - Anaconda Navigator - което прави всеки аспект от средата на Anaconda достъпен чрез удобен графичен интерфейс. Намирането на компоненти, поддържането им в крак с времето и работата с тях е много по-лесно при Anaconda, отколкото при CPython.

Друга благодат е начинът, по който Anaconda борави с компоненти извън екосистемата на Python, ако те са необходими за определен пакет. В condaмениджъра на пакети, създаден специално за Anaconda, дръжки инсталирането на двете Python пакети и трети страни, външни софтуерни изисквания.

Ограничения на Anaconda Python

Тъй като Anaconda включва толкова много полезни библиотеки и може да инсталира още повече само с няколко натискания на клавиши, размерът на инсталация на Anaconda може да бъде много по-голям от CPython. Базова инсталация на CPython работи около 100MB; Инсталациите на Anaconda могат да достигнат размер до гигабайта. Това може да е проблем в ситуации, когато имате ограничения на ресурсите.

Един от начините за намаляване на отпечатъка на Anaconda е инсталирането на Miniconda, премахната версия на Anaconda, която включва само абсолютния минимум парчета, необходими за стартиране и работа. След това можете да добавяте пакети към Miniconda, както сметнете за добре, като гледате колко място отделя всяко парче.

ActivePython

Подобно на Anaconda, ActivePython се създава и поддържа от компания с идеална цел - в случая ActiveState, която предлага редица езикови изпълнения заедно с многоезичната Komodo IDE.

Случаи на използване на ActivePython

ActivePython е насочен към корпоративни потребители и изследователи на данни - хора, които искат да използват Python, но не искат да отделят много усилия за сглобяване и управление на инсталация на Python. ActivePython използва обикновения pipмениджър на пакети на Python , но също така предоставя няколкостотин общи библиотеки като проверени пакети, заедно с някои общи библиотеки със зависимости на трети страни, като библиотеката на ядрото на Intel Math.

Ограничения на ActivePython

Има един потенциален недостатък на подхода на ActivePython за работа с пакети с външни зависимости. Ако искате да надстроите до по-нова версия на проект със сложни зависимости (например TensorFlow), ще трябва да надстроите и вашата инсталация на ActivePython. В среди, където развитието има тенденция да бъде обвързано с конкретна версия на проект, това не е по-малък проблем. Но в среди, където разработката има тенденция да проследява авангардни версии, това може да представлява проблем.

PyPy

Заменящ интерпретатор CPython, PyPy използва компилация точно навреме (JIT), за да ускори изпълнението на програми на Python. В зависимост от изпълняваната задача, подобренията в производителността могат да бъдат драматични. 

Случаи на използване на PyPy

Често срещано оплакване относно Python като цяло и по-специално CPython е скоростта. По подразбиране Python работи много пъти по-бавно от C, понякога стотици пъти по-бавно. PyPy JIT компилира Python код на машинен език, осигурявайки 7,7x ускорение над CPython средно. Някои задачи се изпълняват до 50 пъти по-бързо. 

Най-хубавото е, че от разработчика не са необходими малко или никакви усилия за отключване на тези печалби. Разменете CPython за PyPy и в по-голямата си част сте готови.

Ограничения на PyPy

PyPy винаги се е представял най-добре с „чисти“ приложения на Python. Пакетите на Python, които взаимодействат с C библиотеки, като NumPy, също не са се справили поради начина, по който PyPy е емулирал родния двоичен интерфейс на CPython. С течение на времето обаче разработчиците на PyPy се справят с този проблем и правят PyPy далеч по-съвместим с повечето пакети на Python, които зависят от разширенията C. Накратко, поддръжката за C разширения все още е ограничена, но далеч по-малко, отколкото преди.

Друг възможен недостатък на PyPy е размерът на средата на изпълнение. Основното изпълнение на CPython в Windows, с изключение на стандартната библиотека, е около 4MB, докато времето на изпълнение на PyPy е около 32MB. Имайте предвид също, че PyPy отдавна подчертава клона 2.x на Python, така че например PyPy за Python 3.x в момента е наличен за Windows само в 32-битова версия на бета-тест. (PyPy се предлага в 64-битови версии за Python 2.x и 3.x за Linux и MacOS.)

Jython

JVM (Java Virtual Machine) служи като време за изпълнение на много езици освен Java. Дългият списък включва Groovy, Scala, Clojure, Kotlin и, да, Python, чрез проекта Jython.

Случаи на използване на Jython

Jython компилира Python 2.x код в JVM байт код и стартира получената програма на JVM. В някои случаи компилирана от Jython програма ще работи по-бързо от своя аналог CPython, но не винаги.

Най-голямото предимство, което Jython предоставя, е директната оперативна съвместимост с останалата част от екосистемата на Java. Java се използва дори по-широко от Python. Изпълнението на Python на JVM позволява на разработчиците на Python да се включат в огромна екосистема от библиотеки и рамки, които иначе не биха могли да използват. По същия начин Jython позволява на разработчиците на Java да използват библиотеки на Python. 

Ограничения на Jython

Най-големият недостатък на Jython е, че той поддържа само 2.x клона на Python. Поддръжката за Python 3.x е в процес на разработка, но е от известно време. Засега нищо не е пуснато.

Имайте предвид също, че докато Jython носи Python в JVM, той не води Python в Android. Тъй като понастоящем няма порт на Jython към Android, Jython не може да се използва за разработване на приложения за Android.

IronPython

Точно както Jython е изпълнение на Python в JVM, IronPython е изпълнение на Python в .Net средата на изпълнение или CLR (Common Language Runtime). IronPython използва DLR (Dynamic Language Runtime) на CLR, за да позволи на програмите на Python да се изпълняват със същата степен на динамичност, която правят в CPython.

Случаи на употреба на IronPython

Подобно на Jython, IronPython е мост. Големият случай на използване е оперативната съвместимост между Python и вселената .Net. Съществуващите .Net сглобки могат да бъдат заредени в програмите IronPython, като се използва синтаксисът за внос на Python и импортиране на обекти. Също така е възможно да компилирате IronPython код в сборка и да го стартирате както е или да го извикате от други езици. Имайте предвид обаче, че MSIL (Microsoft Intermediate Language) в сборката не може да бъде достъпен директно от други .Net езици, тъй като не е съвместим със спецификацията на общия език.

Ограничения на IronPython

Подобно на Jython, IronPython в момента поддържа само Python 2.x. Въпреки това се работи по създаването на изпълнение на IronPython 3.x.

WinPython

Както подсказва името, WinPython е дистрибуция на Python, създадена специално за потребители на Microsoft Windows. По-ранните издания на CPython за Windows не бяха добре проектирани и беше трудно за потребителите на Windows да се възползват напълно от екосистемата на Python. Изданието на CPython за Windows се подобри с течение на времето, но WinPython все още предлага много неща, които не се намират в CPython.

Случаи на използване на WinPython

Основната атракция на WinPython е, че това е самостоятелно издание на Python. Не е необходимо да се инсталира на машината, където работи; просто трябва да се разопакова в директория. Това прави WinPython полезен в случаите, когато софтуерът не може да бъде инсталиран на дадена система, в сценарии, в които предварително конфигурирано изпълнение на Python трябва да бъде разпределено заедно с приложенията, които да се изпълняват в него, или когато множество издания на Python трябва да работят едно до друго без да си пречат помежду си.

WinPython също така обединява множество пакети, ориентирани към науката за данни - NumPy, Pandas, SciPy, Matplotlib и др., Така че те могат да бъдат използвани веднага, без допълнителни стъпки за инсталиране. Включен е и компилатор C / C ++, тъй като много машини с Windows нямат такъв и много разширения на Python изискват или могат да го използват.

Ограничения на WinPython

Едно ограничение на WinPython е, че може да включва твърде много по подразбиране за някои случаи на употреба. За да отстранят това, създателите на WinPython предоставят „нулева“ версия на всяко издание на WinPython, съдържаща само възможно най-минималната инсталация на продукта. По-късно могат да се добавят още пакети, или със собствения pipинструмент на Python, или с помощната програма WPPM на WinPython.

Python Portable

Python Portable е изпълнението на CPython в самостоятелен пакет. Идва с любезното съдействие на колекцията PortableDevApps на подобни автономни приложения.

Преносими случаи на използване на Python

Подобно на WinPython, Python Portable включва множество пакети за научни изчисления - Matplotlib, Numba, SymPy, SciPy, Cython и други. Също като WinPython, Python Portable работи, без да е необходимо да бъде официално инсталиран на хоста на Windows; той може да живее във всяка директория или на сменяемо устройство. Също така е включен Spyder IDE и мениджърът на пакети за пип на Python, така че можете да добавяте, променяте или премахвате пакети, ако е необходимо.

Преносими ограничения на Python

За разлика от WinPython, Python Portable не включва C / C ++ компилатор. Ще трябва да предоставите компилатор на C, за да използвате код, написан с Cython (и по този начин компилиран в C).

Експериментални дистрибуции на Python

Тези дистрибуции правят значителни промени в Python - или защото използват Python като отправна точка за нещо съвсем ново, или защото правят стратегически промени в стандартния Python. Като цяло тези Pythons все още не се препоръчват за производствена употреба. 

Ако живеете с кодова база на Python 2.x в обозримо бъдеще, може да искате да разгледате нашата статия за експерименталните дистрибуции на Python, поддържащи Python 2.x жив.

MicroPython

MicroPython осигурява минимално подмножество на езика Python, което може да работи на хардуер от изключително нисък клас, като микроконтролери. MicroPython изпълнява Python 3.4 с някои разлики. Лесно е да напишете MicroPython код, ако познавате Python, но съществуващият код може да не работи както е.

Пикопия