12 питонов на любой вкус

Выбирая 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 получает и устанавливает пакеты из собственного репозитория пакетов Python PyPI. Pip даже установит предварительно скомпилированные двоичные файлы (через формат распространения wheel), если они предоставлены разработчиком, но он не будет устанавливать никаких зависимостей, которые могут иметь пакеты за пределами PyPI. 

Видео по теме: Как Python упрощает программирование

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

Анаконда 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 занимает около 100 МБ; Установки Anaconda могут вырасти до гигабайт. Это может быть проблемой в ситуациях, когда у вас есть ограничения на ресурсы.

Один из способов уменьшить размер Anaconda - это установить Miniconda, урезанную версию Anaconda, которая включает в себя только абсолютный минимум компонентов, необходимых для начала работы. Затем вы можете добавлять пакеты в Miniconda по своему усмотрению, с учетом того, сколько места занимает каждая часть.

ActivePython

Как и Anaconda, ActivePython создается и поддерживается коммерческой компанией - в данном случае ActiveState, которая продает ряд языковых сред вместе с многоязычной IDE Komodo.

Примеры использования ActivePython

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

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

Есть один потенциальный недостаток подхода ActivePython к обработке пакетов с внешними зависимостями. Если вы хотите перейти на более новую версию проекта со сложными зависимостями (например, TensorFlow), вам также потребуется обновить установку ActivePython. В средах, где разработка обычно привязана к конкретной версии проекта, это не проблема. Но в средах, где разработка имеет тенденцию отслеживать самые современные версии, это может представлять проблему.

PyPy

Незаменимая замена интерпретатора CPython, PyPy использует JIT-компиляцию для ускорения выполнения программ Python. В зависимости от выполняемой задачи прирост производительности может быть значительным. 

Примеры использования PyPy

Распространенная жалоба на Python в целом и на CPython в частности - скорость. По умолчанию Python работает во много раз медленнее, чем C, иногда в сотни раз медленнее. PyPy JIT-компилирует код Python на машинный язык, обеспечивая в среднем 7,7-кратное ускорение по сравнению с CPython. Некоторые задачи выполняются в 50 раз быстрее. 

Самое приятное то, что со стороны разработчика не требуется почти никаких усилий, чтобы разблокировать эти достижения. Замените CPython на PyPy, и по большей части все готово.

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

PyPy всегда лучше всего работал с «чистыми» приложениями Python. Пакеты Python, которые взаимодействуют с библиотеками C, такими как NumPy, также не достигли успеха из-за того, как PyPy имитировал собственные двоичные интерфейсы CPython. Однако со временем разработчики PyPy устранили эту проблему и сделали PyPy более совместимым с большинством пакетов Python, которые зависят от расширений C. Короче говоря, поддержка расширений C все еще ограничена, но намного меньше, чем раньше.

Еще один возможный недостаток PyPy - это размер среды выполнения. Основная среда выполнения CPython в Windows, за исключением стандартной библиотеки, составляет около 4 МБ, а среда выполнения PyPy - около 32 МБ. Также обратите внимание, что PyPy уже давно делает упор на ветку Python 2.x, поэтому, например, PyPy для Python 3.x в настоящее время доступен для Windows только в 32-битной бета-версии. (PyPy доступен в 64-битных версиях для Python 2.x и 3.x для Linux и MacOS.)

Jython

JVM (виртуальная машина Java) служит средой выполнения для очень многих языков, помимо 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 заключается в том, что он поддерживает только ветку Python 2.x. Поддержка 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, так как он не соответствует спецификации Common Language Specification.

Ограничения 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, либо с помощью утилиты WinPython WPPM.

Python Portable

Python Portable - это среда выполнения CPython в автономном пакете. Это любезно предоставлено коллекцией PortableDevApps аналогичных автономных приложений.

Примеры использования Python Portable

Как и 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. По большому счету, эти питоны пока не рекомендуются для промышленного использования. 

Если в обозримом будущем вы живете с кодовой базой Python 2.x, возможно, вам стоит ознакомиться с нашей статьей об экспериментальных дистрибутивах Python, поддерживающих жизнь Python 2.x.

MicroPython

MicroPython предоставляет минимальное подмножество языка Python, которое может работать на оборудовании крайне низкого уровня, таком как микроконтроллеры. MicroPython реализует Python 3.4 с некоторыми отличиями. Если вы знаете Python, легко написать код MicroPython, но существующий код может не работать как есть.

Pycopy