В настоящее время имеются шесть промышленных реализаций Python:
Для экспериментов и обучения используйте реализацию CPython как наиболее зрелую и получившую широкую поддержку. Она существует дольше других, в то время как Jython, IronPython и РуРу являются более новыми реализациями и в меньшей степени проявили себя.
Для научных математических вычислений, а так же для экспериментов с машинным обучением, искусственным интеллектом и в сфере компьютерного зрения рекомендуется использовать пакет Anaconda, так как он включает в себя все, уже скомпилированные, необходимые для названных целей пакеты и инструменты.
Приложение, созданное с помощью Jython, является полноценным Jаvа приложением со всеми свойственными Java преимуществами и недостатками развертывания и выполняется на любой целевой машине с подходящей JVM. Точно так же приложение, созданное с помощью IronPython, полностью совместимо со спецификациями .NЕТ. РуРу, благодаря JIТ-компиляции в машинный код, зачастую обеспечивает большее быстродействие чем реализация CPython и совместима с большинством стандартных библиотек CPython.
На сайте docs-python.ru говориться о CPython, как о наиболее широко используемой реализации.
CPython классическая реализация и часто называемая просто Python, ее можно считать "эталонной реализацией" языка. CPython включает компилятор, интерпретатор и набор встроенных модулей и дополнительных расширений, которые написаны на языке С.
CPython можно использовать на любой платформе, обеспечивающей работу компилятора языка С, т.е. на любой из современных популярных платформ. О том, как загрузить и установить CPython смотри раздел "Установка Python".
Jython это реализация Python на виртуальной машине Java (JVM), предоставляя Python преимущества работы на JVM и доступ к классам, написанным на Java. Аналогично IronPython, код, выполняемый в Jython, может взаимодействовать с классами и библиотеками Java, но не может использовать многие библиотеки, предназначенные для CPython.
Jython поддерживает пока только версию v2. Работая на Jython, вы сможете использовать все библиотеки и фреймворки Java. Оптимальное использование Jython требует знакомства с основными классами Java. Вам не придется писать код на Java, но документация и примеры для библиотек реализованы в терминах Java, по этому, Jаvа-классы не должны быть чем-то новым.
Jython дополняет Java и особенно подходит для решения следующих задач:
Пример запуска кода на Python внутри простого Java-приложения:
import org.python.util.PythonInterpreter; public class JythonHelloWorld { public static void main(String[] args) { try(PythonInterpreter pyInterp = new PythonInterpreter()) { pyInterp.exec("print('Hello Python World!')"); } } }
Пример использования Java из кода Python
from java.lang import System # Java import print('Running on Java version: ' + System.getProperty('java.version')) print('Unix time from Java: ' + str(System.currentTimeMillis()))
Дополнительно смотрите:
IronPython это реализация .NET для Python (доступна 32- и 64-разрядная версия), обеспечивающая взаимодействие с C#, F# и Visual Basic, доступ к API-интерфейсам .NET, стандартную отладку Python (но не отладку в смешанном режиме C++) и отладку в смешанном режиме IronPython и C#. Однако IronPython не поддерживает виртуальные среды.
С IronPython можно использовать все библиотеки и фреймворки CLR. Существует кросс-платформенная реализация CLR, известная под названием Mono (www.mono-project.com) которая работает под управлением других операционных систем. Оптимальное использование IronPython требует знакомства с основными библиотеками CLR. Вам не придется писать код на С#, но документация и примеры для библиотек реализованы в терминах С#, по этому, язык С# не должен быть для вас чем-то новым. Чтобы использовать IronPython, вам следует обратиться к оригинальной онлайн-документацией IronPython.
РуРу - исторически сложилось так, что PyPy использовался для обозначения двух вещей. Первое - это набор инструментов перевода RPython для создания интерпретаторов под динамические языки программирования. А второе - это одна из конкретных реализаций Python, созданных с его помощью. Так как RPython использует тот же синтаксис, что и Python, эта сгенерированная версия стала известна как интерпретатор Python, написанный на Python.
Теперь, что бы не было путаницы, слово PyPy используется для обозначения реализации Python2/3 с явным упоминанием RPython translation toolchain. PyPy разработан таким образом, чтобы быть гибким и с ним было легко экспериментировать. В принципе, о PyPy можно сказать, что это полноценная замена CPython. Он создан с использованием языка RPython, который был разработан совместно с ним. Основная причина его использования вместо CPython - скорость: он обычно работает быстрее.
Дополнительно смотрите раздел "Установка и использование PyPy3".
Примечание: на платформе/фреймворке RPython также реализованы Prolog (почти полный), Smalltalk, JavaScript, Scheme и Gameboy. Существует также реализация Ruby под названием Topaz и реализация PHP под названием HippyVM.
Anaconda - дистрибутив языков программирования Python и R, включающий набор популярных свободных библиотек, объединённых проблематиками науки о данных и машинного обучения. Основная цель - поставка единым согласованным комплектом наиболее востребованных соответствующим кругом пользователей тематических модулей с разрешением возникающих зависимостей и конфликтов, которые неизбежны при неудачной установке . По состоянию на 2020 год содержит более 1,6 тыс. модулей.
Предназначена в основном для:
Основная особенность дистрибутива - оригинальный менеджер разрешения зависимостей conda с графическим интерфейсом Anaconda Navigator, что позволяет отказаться от стандартных менеджеров пакетов (таких, как pip для Python). Дистрибутив скачивается единожды, и вся последующая конфигурация, в том числе установка дополнительных модулей, может проводится в офлайне. Кроме того, обеспечивается возможность ведения нескольких изолированных сред с раздельным разрешением версионных зависимостей в каждой.
Поддерживаются платформы Linux (x86-64), Windows (i686, x86-64), macOS
Brython - реализация Python 3 для клиентского веб-программирования.
Brython призван заменить Javascript в качестве языка сценариев для программистов Python. Таким образом, это реализация Python 3 (ее можно протестировать через консоль браузера), адаптированная к среде HTML5, то есть с интерфейсом к объектам и событиям DOM.
Важно! Скорость выполнения для большинства операций -аналогична CPython.
Brython можно использовать, ничего не устанавливая, просто подключив скрипты Brython из CDN cdn.jsdelivr.net
или cdnjs.cloudflare.com
.
Можно выбрать какую-то определенную версию Python 3 (страница релизов Brython на Github):
<script src="https://cdn.jsdelivr.net/npm/brython@3.11.2/brython.min.js"></script>
Поддерживаются диапазоны версий, поэтому, если нужна последняя из версий 3.11.x:
<script src="https://cdn.jsdelivr.net/npm/brython@3.11/brython.min.js"></script>
Предыдущий код позволит использовать необработанный код Python, но если необходимо импортировать модули из стандартной библиотеки, то нужно загрузить еще один файл javascript с доступной стандартной библиотекой Python:
<script src="https://cdn.jsdelivr.net/npm/brython@3.11.2/brython_stdlib.js"></script> <!-- или так --> <script src="https://cdn.jsdelivr.net/npm/brython@3.11/brython_stdlib.js"></script>
Важное предупреждение: Brython выполняет программы, написанные на Python, но не программы, написанные на C. Это означает, что, например,
numpy
и пакеты обработки данных, которые его используют, не будут работать.Кроме того, возможность браузеров отправлять HTTP-запросы ограничена по соображениям безопасности. Такие пакеты, какurllib.request
в стандартном дистрибутиве, не смогут отправлять произвольные запросы на любой URL-адрес. Это общее для всех реализаций Python в браузере.
brython.js
и brython_stdlib.js
.brython.js
включает в себя очень часто используемые модули: browser
, browser.html
, javascript
.brython_stdlib.js
: группирует все модули и пакеты части стандартной библиотеки Python, поддерживаемой Brython.brython()
при загрузке HTML страницы, например <body onload='brython()'>
. На этапе разработки можно передать аргумент функции brython()
:Написать код Python внутри тегов .
<html> <head> <script src="https://cdn.jsdelivr.net/npm/brython@3.11/brython.min.js"></script> </head> <body onload="brython()"> <script type="text/python"> from browser import document from browser.widgets.dialog import InfoDialog def click(ev): InfoDialog("Hello", f"Hello, {document['zone'].value} !") // привязать событие 'click' на кнопку с `id="echo"` document["echo"].bind("click", click) </script> <input id="zone"> <button id="echo">click !</button> </body> </html>
Если программа Python большая, другой вариант - записать ее в отдельный файл и загрузить с помощью атрибута src
тега script
:
<html> <head> <script src="https://cdn.jsdelivr.net/npm/brython@3.11/brython.min.js"></script> </head> <body onload="brython()"> <script type="text/python" src="test.py"></script> <input id="zone" autocomplete="off"> <button id="mybutton">click!</button> </body> </html>
Brython можно установить локально при помощи pip
в виртуальное окружение:
$ pip install brython
Пакет устанавливает клиентскую программу brython-cli
(аналогично python -m brython
). Затем в пустом каталоге нужно запустить:
$ brython-cli install
Обновления:
При публикации новой версии Brython обновление выполняется обычной командой:
$ pip install brython --upgrade
Затем в каталоге приложения можно обновить файлы Brython (brython.js
и brython_stdlib.js
):
$ brython-cli upgrade
Другие команды:
make_modules
: создает дистрибутив для конкретного приложения, чтобы заменить brython_stdlib.js
файлом меньшего размера. make_dist
: сгенерируйте пакет CPython, подходящий для распространения с помощью PyPI, для установки приложения Brython. make_package
: генерирует "Brython package", позволяющий очень просто распространять модуль или пакет.-- version
: печатает версию Brython.