12 Pythonów na każdą potrzebę programowania

Decydując się na Python do tworzenia oprogramowania, wybierasz duży ekosystem językowy z bogactwem pakietów spełniających wszelkie potrzeby programistyczne. Ale oprócz bibliotek do wszystkiego, od programowania GUI po uczenie maszynowe, możesz także wybierać spośród wielu środowisk wykonawczych Pythona - a niektóre z tych środowisk wykonawczych mogą być lepiej dostosowane do przypadku użycia, który masz pod ręką, niż inne.

Oto krótka prezentacja dystrybucji Pythona, od standardowej implementacji (CPython) do wersji zoptymalizowanych pod kątem szybkości (PyPy), do specjalnych przypadków użycia (Anaconda, ActivePython), dla różnych środowisk wykonawczych języka (Jython, IronPython), a nawet do cięcia eksperymentowanie na krawędzi (PyCopy, MesaPy).

CPython

CPython jest referencyjną implementacją Pythona, standardową wersją, na którą wyglądają wszystkie inne wcielenia Pythona. CPython jest napisany w C, jak sugeruje nazwa, i jest tworzony przez tę samą podstawową grupę osób odpowiedzialnych za wszystkie decyzje dotyczące języka Python na najwyższym szczeblu.

Przypadki użycia w CPythonie

Ponieważ CPython jest referencyjną implementacją Pythona, jest najbardziej konserwatywny pod względem optymalizacji. Jest to zgodne z projektem. Opiekunowie Pythona chcą, aby CPython był najbardziej kompatybilną i znormalizowaną implementacją Pythona.

CPython to najlepszy wybór, gdy zgodność i zgodność ze standardami Pythona są ważniejsze niż sama wydajność i inne problemy. CPython jest także przydatny dla eksperta, który chce pracować z Pythonem w jego najbardziej fundamentalnym wcieleniu i jest skłonny zrezygnować z pewnych udogodnień. 

Na przykład, w przypadku CPython, musisz zrobić trochę więcej podnoszenia, aby skonfigurować środowiska wirtualne. Inne dystrybucje (w szczególności Anaconda) zapewniają większą automatyzację konfiguracji obszaru roboczego.

Ograniczenia CPythona

CPython nie ma optymalizacji wydajności, które można znaleźć w innych wersjach języka Python. Nie ma natywnego kompilatora JIT (just-in-time), przyspieszonych bibliotek matematycznych ani dodatków innych firm ze względu na wydajność. To wszystko, co możesz dodać samodzielnie, ale nie są one dołączane. Ponownie, wszystko to jest zgodne z projektem, aby zapewnić maksymalną kompatybilność i pozwolić CPythonowi służyć jako implementacja referencyjna, ale oznacza to, że wszelkie optymalizacje wydajności zależą od programisty.

Co więcej, CPython zapewnia tylko podstawowy zestaw narzędzi do pracy z Pythonem. Na przykład menedżer pakietów pip uzyskuje i instaluje pakiety z natywnego repozytorium pakietów PyPI języka Python. Pip zainstaluje nawet prekompilowane pliki binarne (za pośrednictwem formatu dystrybucji koła), jeśli są one dostarczone przez programistę, ale nie zainstaluje żadnych zależności, które pakiety mogą mieć poza PyPI. 

Powiązany film: Jak Python ułatwia programowanie

Idealny dla IT, Python upraszcza wiele rodzajów pracy, od automatyzacji systemu po pracę w najnowocześniejszych dziedzinach, takich jak uczenie maszynowe.

Anaconda Python

Anaconda, wyprodukowana przez Anaconda, Inc. (dawniej Continuum Analytics), jest przeznaczona dla programistów Pythona, którzy potrzebują dystrybucji wspieranej przez komercyjnego dostawcę oraz z planami wsparcia dla przedsiębiorstw. Główne przypadki użycia Anaconda Python to matematyka, statystyka, inżynieria, analiza danych, uczenie maszynowe i powiązane aplikacje.

Przypadki użycia Anaconda Python

Anaconda zawiera wiele najpopularniejszych bibliotek używanych w komercyjnych i naukowych pracach Pythona - SciPy, NumPy, Numba itd. - i udostępnia wiele innych bibliotek za pośrednictwem niestandardowego systemu zarządzania pakietami.

Anaconda wyróżnia się spośród innych dystrybucji tym, jak integruje wszystkie te elementy. Po zainstalowaniu Anaconda udostępnia aplikację komputerową - Anaconda Navigator - która udostępnia każdy aspekt środowiska Anaconda poprzez wygodny graficzny interfejs użytkownika. Znajdowanie komponentów, utrzymywanie ich na bieżąco i praca z nimi jest znacznie łatwiejsza od razu po wyjęciu z pudełka z Anacondą niż z CPythonem.

Kolejnym dobrodziejstwem jest sposób, w jaki Anaconda obsługuje komponenty spoza ekosystemu Pythona, jeśli są one wymagane dla określonego pakietu. condaMenedżer pakietów, stworzony specjalnie dla Anaconda, uchwyty instalacji oba pakiety Python i firm, zewnętrzne wymagania programowe.

Ograniczenia Anaconda Python

Ponieważ Anaconda zawiera tak wiele przydatnych bibliotek i może zainstalować jeszcze więcej za pomocą zaledwie kilku naciśnięć klawiszy, rozmiar instalacji Anaconda może być znacznie większy niż CPython. Podstawowa instalacja CPythona zajmuje około 100 MB; Instalacje Anaconda mogą rosnąć do gigabajtów. Może to stanowić problem w sytuacjach, w których występują ograniczenia zasobów.

Jednym ze sposobów na zmniejszenie zajmowanego miejsca przez Anacondę jest zainstalowanie Minicondy, okrojonej wersji Anacondy, która zawiera tylko absolutne minimum elementów potrzebnych do rozpoczęcia pracy. Następnie możesz dodawać pakiety do Minicondy według własnego uznania, zwracając uwagę na to, ile miejsca zajmuje każdy element.

ActivePython

Podobnie jak Anaconda, ActivePython jest tworzony i utrzymywany przez firmę nastawioną na zysk - w tym przypadku ActiveState, która sprzedaje wiele językowych środowisk wykonawczych wraz z wielojęzycznym IDE Komodo.

Przypadki użycia ActivePython

ActivePython jest skierowany do użytkowników korporacyjnych i analityków danych - ludzi, którzy chcą używać Pythona, ale nie chcą poświęcać dużo wysiłku na składanie i zarządzanie instalacją Pythona. ActivePython używa zwykłego pipmenedżera pakietów Pythona , ale dostarcza również kilkaset wspólnych bibliotek jako zweryfikowanych pakietów, wraz z niektórymi typowymi bibliotekami z zależnościami innych firm, takimi jak Intel Math Kernel Library.

Ograniczenia ActivePython

Istnieje jedna potencjalna wada podejścia ActivePython do obsługi pakietów z zewnętrznymi zależnościami. Jeśli chcesz zaktualizować projekt do nowszej wersji ze złożonymi zależnościami (np. TensorFlow), będziesz musiał również zaktualizować swoją instalację ActivePython. W środowiskach, w których programowanie jest zwykle powiązane z określoną wersją projektu, jest to mniejszy problem. Jednak w środowiskach, w których programowanie zwykle śledzi nowatorskie wersje, może to stanowić problem.

PyPy

PyPy, zastępca interpretera języka CPython, wykorzystuje kompilację just-in-time (JIT), aby przyspieszyć wykonywanie programów w języku Python. W zależności od wykonywanego zadania wzrost wydajności może być dramatyczny. 

Przypadki użycia PyPy

Powszechną skargą dotyczącą ogólnie Pythona, a CPythona w szczególności, jest szybkość. Domyślnie Python działa wiele razy wolniej niż C, czasami setki razy wolniej. PyPy JIT kompiluje kod Pythona do języka maszynowego, zapewniając średnio 7,7-krotne przyspieszenie w porównaniu z CPython. Niektóre zadania działają nawet 50x szybciej. 

Najlepsze jest to, że programista nie potrzebuje żadnego wysiłku, aby odblokować te korzyści. Zamień CPython na PyPy iw większości już gotowe.

Ograniczenia PyPy

PyPy zawsze działał najlepiej z „czystymi” aplikacjami Pythona. Pakiety Pythona, które współpracują z bibliotekami C, takimi jak NumPy, nie radziły sobie tak dobrze ze względu na sposób, w jaki PyPy emulowało natywne interfejsy binarne CPythona. Z czasem jednak programiści PyPy odeszli od tego problemu i sprawili, że PyPy jest znacznie bardziej kompatybilny z większością pakietów Pythona, które zależą od rozszerzeń C. Krótko mówiąc, wsparcie dla rozszerzeń C jest nadal ograniczone, ale znacznie mniejsze niż kiedyś.

Inną możliwą wadą PyPy jest rozmiar środowiska wykonawczego. Podstawowe środowisko wykonawcze CPythona w systemie Windows, z wyłączeniem biblioteki standardowej, wynosi około 4 MB, podczas gdy środowisko wykonawcze PyPy to około 32 MB. Zauważ również, że PyPy od dawna kładzie nacisk na gałąź 2.x Pythona, więc na przykład PyPy dla Python 3.x jest obecnie dostępny dla systemu Windows tylko w 32-bitowej wersji beta-testowej. (PyPy jest dostępny w wersjach 64-bitowych dla Pythona 2.xi 3.x dla Linuxa i MacOS.)

Jython

JVM (Java Virtual Machine) służy jako środowisko wykonawcze dla wielu języków poza Javą. Długa lista obejmuje Groovy, Scala, Clojure, Kotlin i, tak, Python, w ramach projektu Jython.

Przypadki użycia Jythona

Jython kompiluje kod Python 2.x do kodu bajtowego maszyny JVM i uruchamia wynikowy program na maszynie JVM. W niektórych przypadkach program skompilowany w języku Jython będzie działał szybciej niż jego odpowiednik w języku CPython, ale nie zawsze.

Największą zaletą Jythona jest bezpośrednia interoperacyjność z resztą ekosystemu Java. Java jest używana nawet szerzej niż Python. Uruchamianie języka Python na maszynie JVM umożliwia programistom Pythona korzystanie z ogromnego ekosystemu bibliotek i frameworków, z których inaczej nie byliby w stanie korzystać. Z tego samego powodu Jython umożliwia programistom Java korzystanie z bibliotek Python. 

Ograniczenia Jythona

Największą wadą Jythona jest to, że obsługuje on tylko gałąź 2.x Pythona. Wsparcie dla Pythona 3.x jest w fazie rozwoju, ale trwało to już jakiś czas. Jak dotąd nic nie zostało wydane.

Należy również zauważyć, że chociaż Jython przenosi Pythona do JVM, nie przenosi Pythona na Androida. Ponieważ obecnie nie ma odpowiedniego przeniesienia Jythona na Androida, Jython nie może być używany do tworzenia aplikacji na Androida.

IronPython

Tak jak Jython jest implementacją języka Python w JVM, tak IronPython jest implementacją języka Python w środowisku uruchomieniowym .Net lub CLR (Common Language Runtime). IronPython używa DLR (Dynamic Language Runtime) środowiska CLR, aby umożliwić programom Python działanie z takim samym stopniem dynamiki, jak w CPythonie.

Przypadki użycia IronPython

Podobnie jak Jython, IronPython jest pomostem. Głównym przypadkiem użycia jest interoperacyjność między Pythonem a uniwersum .Net. Istniejące zestawy .Net można ładować w programach IronPython przy użyciu natywnej składni języka Python importu i manipulacji obiektami. Możliwe jest również skompilowanie kodu IronPython do zestawu i uruchomienie go w takiej postaci, w jakiej jest, lub wywołanie go z innych języków. Należy jednak zauważyć, że MSIL (Microsoft Intermediate Language) w zestawie nie jest bezpośrednio dostępny z innych języków .Net, ponieważ nie jest zgodny ze specyfikacją Common Language Specification.

Ograniczenia IronPython

Podobnie jak Jython, IronPython obsługuje obecnie tylko Python 2.x. Jednak trwają prace nad stworzeniem implementacji IronPython 3.x.

WinPython

Jak sama nazwa wskazuje, WinPython to dystrybucja Pythona stworzona specjalnie dla użytkowników Microsoft Windows. Wcześniejsze wersje CPythona dla systemu Windows nie były dobrze zaprojektowane i użytkownikom systemu Windows trudno było w pełni wykorzystać ekosystem Pythona. Wersja CPythona dla systemu Windows została ulepszona z biegiem czasu, ale WinPython nadal oferuje wiele rzeczy, których nie ma w CPythonie.

Przypadki użycia WinPython

Główną atrakcją WinPythona jest to, że jest to samodzielna edycja Pythona. Nie trzeba go instalować na komputerze, na którym działa; wystarczy rozpakować go do katalogu. To sprawia, że ​​WinPython jest przydatny w przypadkach, gdy oprogramowania nie można zainstalować w danym systemie, w scenariuszach, w których wstępnie skonfigurowane środowisko wykonawcze języka Python musi być dystrybuowane wraz z aplikacjami, które mają na nim działać, lub gdy wiele wersji języka Python musi działać obok siebie bez przeszkadzania sobie nawzajem.

WinPython zawiera również mnóstwo pakietów zorientowanych na naukę danych - NumPy, Pandas, SciPy, Matplotlib itp. - dzięki czemu można ich używać od razu, bez dodatkowych czynności instalacyjnych. Dołączony jest również kompilator C / C ++, ponieważ wiele komputerów z systemem Windows go nie ma, a wiele rozszerzeń Pythona wymaga lub może z niego korzystać.

Ograniczenia WinPython

Jednym z ograniczeń programu WinPython jest to, że może on domyślnie zawierać zbyt dużo w niektórych przypadkach użycia. Aby temu zaradzić, twórcy WinPython udostępniają „zerową” wersję każdej edycji WinPython, zawierającą tylko możliwie najmniejszą możliwą instalację produktu. Więcej pakietów można dodać później, za pomocą własnego pipnarzędzia Pythona lub narzędzia WPPM WinPython.

Python Portable

Python Portable to środowisko wykonawcze CPython w samodzielnym pakiecie. Jest to zasługa kolekcji podobnie samodzielnych aplikacji PortableDevApps.

Przypadki użycia Python Portable

Podobnie jak WinPython, Python Portable zawiera mnóstwo pakietów do obliczeń naukowych - Matplotlib, Numba, SymPy, SciPy, Cython i inne. Podobnie jak WinPython, Python Portable działa bez konieczności formalnej instalacji na hoście Windows; może znajdować się w dowolnym katalogu lub na dysku wymiennym. Dołączone jest również Spyder IDE i menedżer pakietów pip Pythona, dzięki czemu możesz dodawać, zmieniać lub usuwać pakiety w razie potrzeby.

Ograniczenia Pythona Portable

W przeciwieństwie do WinPython, Python Portable nie zawiera kompilatora C / C ++. Będziesz musiał dostarczyć kompilator C, aby korzystać z kodu napisanego w Cythonie (a tym samym skompilowanego do C).

Eksperymentalne dystrybucje Pythona

Te dystrybucje wprowadzają znaczące zmiany w Pythonie - albo dlatego, że używają Pythona jako punktu wyjścia do czegoś zupełnie nowego, albo dlatego, że dokonują strategicznych zmian w standardowym Pythonie. Ogólnie rzecz biorąc, te Pythony nie są jeszcze zalecane do użytku produkcyjnego. 

Jeśli żyjesz z bazą kodu Python 2.x w dającej się przewidzieć przyszłości, możesz zapoznać się z naszym artykułem o eksperymentalnych dystrybucjach Pythona, które utrzymują Python 2.x przy życiu.

MicroPython

MicroPython zapewnia minimalny podzbiór języka Python, który może działać na bardzo niskim sprzęcie, takim jak mikrokontrolery. MicroPython implementuje Python 3.4 z pewnymi różnicami. Łatwo jest napisać kod MicroPython, jeśli znasz Python, ale istniejący kod może nie działać tak, jak jest.

Pycopy