PyScript, фреймворк для создания расширенных приложений Python в браузере, позволяет встраивать Python и HTML.

В программной речи на PyCon 2022 в Солт-Лейк-Сити, штат Юта, Питер Ван, председатель и главный исполнительный директор Anaconda, Inc, представил еще одного новичка в интерпретаторах Python в браузерах. Сообщество Python давно искало способ написать Python вместо JavaScript для работы в веб-браузерах, и на протяжении многих лет предпринимались различные усилия в этом направлении. Ван анонсировал PyScript как новый фреймворк, созданный на основе одного из этих более ранних проектов и позволяющий создавать сценарии Python непосредственно в браузере.

Эти программы имеют доступ к большей части существующей экосистемы Python и могут напрямую взаимодействовать с объектной моделью документа (DOM) браузера. Кроме того, в рамках своей презентации он провел весьма показательные демонстрации.

Ван начал с того, что представил себя и компанию Anaconda, которую он основал десять лет назад вместе с Трэвисом Олифантом. Олифант — создатель NumPy и один из основателей SciPy, которые являются краеугольными камнями экосистемы научных вычислений Python. Anaconda — это дистрибутив языков программирования Python и R для научных вычислений (наука о данных, приложения машинного обучения, крупномасштабная обработка данных, предиктивная аналитика и т. д.), цель которого — упростить управление пакетами и их развертывание.

В состав дистрибутива входят пакеты обработки данных, подходящие для Windows, Linux и macOS. Он разработан и поддерживается компанией Anaconda, Inc., основанной Питером Вангом и Трэвисом Олифантом в 2012 году. Как продукт Anaconda Inc., он также известен как Anaconda Distribution или Anaconda Individual Edition, а другие продукты компании — Anaconda Team. Edition и Anaconda Enterprise Edition, оба платные.

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

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

Но есть еще один аспект языка, который делает его таким желанным с его точки зрения: его можно расширить с помощью бинарных расширений, использующих API, написанный на C, но доступный из других языков. Ван сравнивает Python с Honda Civic с крепежными болтами для варп-двигателя. Таким образом, язык может быть изучен детьми, которые затем могут открыть багажник и закрепить варп-модули, которые в некоторых случаях позволяют коду работать быстрее, чем C или C++, сказал Ван.

Этот аспект иногда упускают из виду, но это означает, что Python можно использовать так, как не могут другие подобные языки. Это не просто Node, это не просто альтернатива Ruby. По его словам, причиной того, что Python был захвачен фирмами с Уолл-стрит 10 или 15 лет назад, была эта способность к деформации.

Чего не хватает

Хотя верно то, что Anaconda стремится предоставить дистрибутив Python, не менее верно и то, что установка всего необходимого для Python слишком сложна. В индексе пакетов Python (PyPI) есть огромное количество пакетов, но заставить их работать вместе сложно. 20% программистов Python имеют плохой опыт работы с языком. По его словам, существует множество различных инструментов, помогающих решить эту проблему, но все они составляют около 80%, а это означает, что в 20% случаев у людей возникает плохой опыт, что на самом деле не имеет значения.

Странно, что для самого популярного в мире языка, каким был бы Python, сложно писать и распространять приложения с пользовательским интерфейсом. Например, вы не можете писать приложения для iOS с помощью Python. Вы не можете создать приложение для Windows, самого популярного рабочего стола предприятия, с пользовательским интерфейсом; Ван сказал, что даже если вы используете веб-интерфейс, вам придется писать JavaScript, CSS и HTML.

Однако последствия этих двух моментов, а именно сложности, связанные с компиляцией и созданием пользовательских интерфейсов, затрудняют обмен его работой с другими. Тем, кто видит в Docker решение этой проблемы, Ван отвечает, что когда вы делаете приложение с помощью Docker, вы упаковываете жесткий диск и отправляете его кому-то. Это не может быть нашим способом заставить миллионы людей использовать этот материал.

В значительной степени Python является жертвой собственного успеха. Это отличный язык ссылок, но это означает, что он связывает все эти вещи. По его словам, многое из того, что мы делаем в области вычислений, связано с идеями и архитектурами 1970-х и 1980-х годов, начиная с языка C и модели процессов Unix; он также включает в себя такие вещи, как цепочки инструментов и протоколы межсоединений, такие как TCP/IP. По его словам, основам самого языка Python любой может обучить любого за выходные, но требуется гораздо больше усилий, чтобы довести их до уровня, когда они смогут создать исполняемый файл для Windows или приложение iOS для iPad. Можем ли мы освободить Python от всего этого?

Python и WebAssembly

По словам Вана, веб-браузер явно выиграл войну операционных систем. Он не знает, будет ли 2022 год настольным Linux (не будет), но он знает, что на настольных компьютерах будет много браузеров. JavaScript лидирует в опросах о популярности некоторых языков, так как это родной язык браузера. Так что, если мы хотим двигаться в этой области, сказал он, WebAssembly (или Wasm), безусловно, является правильным ответом.

WebAssembly кардинально меняет правила игры. Это набор инструкций виртуального ЦП, который недавно стал стандартом W3C; он имеет 32-битное адресное пространство и может выполнять 64-битные арифметические операции. Существует инструмент сборки Emscripten, который можно использовать для компиляции большей части кода C и C++ в WebAssembly, который затем можно запустить в браузере. По словам Вана, WebAssembly хорошо поддерживается браузерами, в том числе мобильными.

CPython — это, конечно же, программа на C, и большая часть цифрового стека Python написана на C или C++. В последние годы такие проекты, как JupyterLite, скомпилировали большие части научного и численного стека Python для работы с WebAssembly.

Перейдя на сайт Pyodide, можно получить в браузере цикл чтения-оценки-печати Python (REPL). Из этих трех симпатичных угловых скобок можно импортировать NumPy и pandas. На сайте JupyterLite можно получить записную книжку в браузере, запустив JupyterLab в локальной системе.

Кристиан Хеймс, ведущий разработчик Python, выступил с докладами и проделал большую работу, чтобы заставить CPython работать с WebAssembly. По словам Вана, вскоре эта платформа станет платформой с поддержкой уровня 2 для CPython. WebAssembly просто предоставляет другую вычислительную архитектуру, помимо x86, Arm и других, на которую может ориентироваться проект CPython.

ПиСкрипт

Ван и другие участники Anaconda проанализировали проделанную работу и подумали, как сделать ее более доступной для большего числа людей. С этой целью Ван анонсировал PyScript, но он сделал это, закодировав демонстрацию «hello world» в прямом эфире со сцены конференции. Это была его первая конференция PyCon, а может быть, и последняя», — сказал он со смехом, печатая короткий HTML-файл, который загружал файл pyscript.js с pyscript.net в тег.

1
2
3

   print("Hello PyCon 2022!")

Затем он дважды щелкнул файл, и приветствие появилось на вкладке браузера; что было встречено бурными аплодисментами. Но это всего лишь HTML, сказал он, поэтому он завернул приведенный выше код в тег и перезагрузил его. В наши дни, конечно, тег был удален из HTML, возможно, к сожалению; теперь мне приходится объяснять детям, что маяка нет.

Поэтому он добавил функцию мерцания в код PyScript и продемонстрировал несколько других вещей. Он создал

с именем, которое затем предназначалось для записи строки путем доступа к DOM для извлечения объекта для

; он также использовал модуль asyncio для тайм-аута на секунду, а затем очистил

и поставить все это в петлю.

Таким образом, PyScript является основой для создания многофункциональных приложений Python в браузере. Он позволяет встраивать Python и HTML, обеспечивает полный доступ к DOM и предоставляет коду доступ к библиотекам JavaScript в обоих направлениях. Код Python может вызывать JavaScript или вызываться JavaScript. Таким образом, вся логика и код приложения могут быть на одном языке, в браузере, веб-сервер не нужен. Можно поместить HTML-файл на USB-ключ и передать его другу. Необходимо скачать сам PyScript, но это делается из файла HTML с помощью расширения .

PyScript — это не ответвление CPython, это тот же самый код, который участники запускали на своих ноутбуках и серверах, сказал Ван, только что скомпилированный для Wasm. Он включает в себя всю работу, которую Pyodide проделал, чтобы основные цифровые, научные и большие пакеты данных работали и для Wasm. PyScript — это структура мнений, которая предоставляет интерфейс внешних функций (FFI) для взаимодействия с JavaScript и DOM; Python уже интегрировал C, C++ и Fortran, поэтому в список можно добавить и JavaScript. Это действительно бессерверные вычисления.

Источник : LWN

А вы?

Каково ваше мнение о PyScript?

Как вы думаете, может ли PyScript работать в веб-браузере так же хорошо, как JavaScript?

Смотрите также:

Доступна версия 3.2 фреймворка Django с автоматическим обнаружением AppConfig, он содержит новые декораторы для административного модуля.

Python 3.11 улучшит поиск ошибок в трассировках и добавит новые функции.

Python 3.11 повысит производительность за счет немного большего объема памяти, прирост скорости составит от 10% до 60%.

Доступна версия ядра Linux 5.17, она содержит очень важные исправления безопасности и значительное улучшение генератора случайных чисел.

Вскоре будет выпущена версия 1.15 языка программирования Go с улучшенными инструментами, производительностью компилятора и стандартной библиотекой.

Leave a comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.