Сообщить об ошибке.

Реализации Python

В настоящее время имеются шесть промышленных реализаций Python:

  1. CPython,
  2. Jython,
  3. IronPython,
  4. РуРу,
  5. Anaconda,
  6. Brython.

Для экспериментов и обучения используйте реализацию CPython как наиболее зрелую и получившую широкую поддержку. Она существует дольше других, в то время как Jython, IronPython и РуРу являются более новыми реализациями и в меньшей степени проявили себя.

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

Приложение, созданное с помощью Jython, является полноценным Jаvа приложением со всеми свойственными Java преимуществами и недостатками развертывания и выполняется на любой целевой машине с подходящей JVM. Точно так же приложение, созданное с помощью IronPython, полностью совместимо со спецификациями .NЕТ. РуРу, благодаря JIТ-компиляции в машинный код, зачастую обеспечивает большее быстродействие чем реализация CPython и совместима с большин­ством стандартных библиотек CPython.

На сайте docs-python.ru говориться о CPython, как о наиболее широко используемой реализации.

CPython.

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

CPython можно использовать на любой платформе, обеспечивающей работу компилятора языка С, т.е. на любой из современных популярных платформ. О том, как загрузить и установить CPython смотри раздел "Установка Python".

Jython.

Jython это реализация Python на виртуальной машине Java (JVM). Аналогично IronPython, код, выполняемый в Jython, может взаимодействовать с классами и библиотеками Java, но не может использовать многие библиотеки, предназначенные для CPython.

Jython поддерживает пока только версию v2. Работая на Jython, вы сможете использовать все библиотеки и фреймворки Java. Оптимальное использование Jython требует знакомства с основными классами Java. Вам не придется писать код на Java, но документация и примеры для библиотек реализованы в терминах Java, по этому, Jаvа-классы не должны быть для вас чем-то новым. Чтобы освоить Jython, вам следует почитать книгу The Definitive Guide to Jython.

lronPython.

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.

РуРу.

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

Также смотрите раздел "Установка и использование PyPy3".

Anaconda.

Anaconda - дистрибутив языков программирования Python и R, включающий набор популярных свободных библиотек, объединённых проблематиками науки о данных и машинного обучения. Основная цель - поставка единым согласованным комплектом наиболее востребованных соответствующим кругом пользователей тематических модулей с разрешением возникающих зависимостей и конфликтов, которые неизбежны при неудачной установке . По состоянию на 2020 год содержит более 1,6 тыс. модулей.

Предназначена в основном для:

  • Разработки и обучения моделей машинного обучения и глубокого обучения с помощью scikit-learn , TensorFlow и Theano.
  • Анализа больших данных с большой производительностью и последующим масштабированием с помощью пакетов Dask , NumPy , pandas и Numba.
  • Визуализации результатов с помощью Matplotlib , Bokeh , Datashader и Holoviews.

Основная особенность дистрибутива - оригинальный менеджер разрешения зависимостей conda с графическим интерфейсом Anaconda Navigator, что позволяет отказаться от стандартных менеджеров пакетов (таких, как pip для Python). Дистрибутив скачивается единожды, и вся последующая конфигурация, в том числе установка дополнительных модулей, может проводится в офлайне. Кроме того, обеспечивается возможность ведения нескольких изолированных сред с раздельным разрешением версионных зависимостей в каждой.

Поддерживаются платформы Linux (x86-64), Windows (i686, x86-64), macOS

Brython.

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, все, что нужно сделать, это:

  • Загрузить скрипт brython.js и brython_stdlib.js.
    • brython.js включает в себя очень часто используемые модули: browser, browser.html, javascript.
    • brython_stdlib.js: группирует все модули и пакеты части стандартной библиотеки Python, поддерживаемой Brython.
  • Загрузить функцию brython() при загрузке HTML страницы, например <body onload='brython()'>. На этапе разработки можно передать аргумент функции brython():
    • 1 для отображения сообщений об ошибках в консоли веб-браузера,
    • 2 для отображения кода Javascript вместе с ошибкой.
  • Написать код 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.