Python в браузере: запуск кода без установки
В редакторе Python есть режим «Браузерный Python»: настоящий интерпретатор CPython, скомпилированный в WebAssembly, выполняет код на вашем устройстве, а не на сервере. NumPy, pandas и SciPy уже включены, устанавливать ничего не нужно.
Как запустить Python в браузере
- Откройте редактор Python.
- Под кнопкой «Запустить» переключите режим запуска с «Сервер выполнения» на «Браузерный Python».
- Нажмите «Запустить». В первый раз браузер скачает Python и пакеты для работы с данными (всего около 35 МБ) и сохранит их в кэше, поэтому следующие запуски начинаются гораздо быстрее.
- Импортируйте NumPy, pandas, SciPy или scikit-learn как обычно. Пример ниже выводит платформу
emscripten, если выполняется в браузере, иlinux, если на сервере.
import sys
import numpy as np
import pandas as pd
print("Python", sys.version.split()[0], "на платформе", sys.platform)
df = pd.DataFrame({"city": ["Москва", "Казань", "Сочи"], "temp_f": [68, 72, 84]})
df["temp_c"] = ((df["temp_f"] - 32) * 5 / 9).round(1)
print(df)
print("Среднее (C):", np.mean(df["temp_c"]).round(1))
«Браузерный Python» или «Сервер выполнения»
| Браузерный Python | Сервер выполнения (по умолчанию) | |
|---|---|---|
| Где выполняется код | На вашем устройстве, в Web Worker | На нашем сервере |
| Ввод с клавиатуры | Строки ввода указываются заранее, до запуска | input() спрашивает данные во время работы программы |
| Библиотеки | NumPy, pandas, SciPy, Matplotlib, scikit-learn, openpyxl | Набор больше: в том числе seaborn, requests и другие |
| Доступ в интернет из кода | Сокетов нет, поэтому requests не работает | Есть |
| Скорость | Долгая первая загрузка, затем быстрый старт; тяжёлые циклы работают медленнее, чем в обычном Python | Обычная скорость Python, небольшая задержка на соединение при каждом запуске |
| Отладчик | Нет: для отладки переключитесь на сервер выполнения | Есть: точки останова, пошаговое выполнение, переменные и стек вызовов |
Как Python работает на веб-странице
Браузеры умеют выполнять JavaScript и WebAssembly, но не Python. Проект Pyodide компилирует CPython и научные библиотеки в WebAssembly, поэтому в браузере работает тот же интерпретатор, который вы установили бы на компьютер. Другие проекты решают задачу иначе: PyScript запускает Python внутри HTML-страниц поверх Pyodide или MicroPython, JupyterLite открывает ноутбуки прямо в браузере, а Brython переводит Python в JavaScript.
Чтобы запустить Python на своей странице, подключите Pyodide и вызовите runPython:
<script src="https://cdn.jsdelivr.net/pyodide/v0.25.1/full/pyodide.js"></script>
<script>
async function main() {
const pyodide = await loadPyodide();
console.log(pyodide.runPython("sum(i * i for i in range(10))")); // 285
}
main();
</script>
Если нужно вставить запускаемый пример в блог или конспект, не написав ни строчки кода, возьмите кнопку Run on CodeUtility.
Ограничения Python в браузере
- Нет сетевых сокетовБраузер из соображений безопасности не даёт открывать сокеты, поэтому библиотеки вроде requests в обычном виде не работают. Программы, которые обращаются к веб-API, запускайте на сервере выполнения.
- Нет оконTkinter и другие библиотеки для интерфейсов не могут открыть окно. Для графиков есть редактор Matplotlib, который показывает рисунок рядом с кодом, а рисунки черепашкой работают на странице Python turtle (на английском).
- ПамятьУ вкладки браузера памяти меньше, чем у компьютера, поэтому очень большие наборы данных лучше обрабатывать на сервере выполнения.
- Первая загрузкаPython и пакеты скачиваются один раз, около 35 МБ; при медленном интернете первый запуск займёт время.
Частые вопросы
Как Python может работать в браузере?
Проект Pyodide компилирует CPython в WebAssembly, поэтому браузер запускает настоящий интерпретатор Python. Редактор скачивает его один раз, после чего код выполняется на вашем устройстве.
Где выполняется мой код в режиме «Браузерный Python»?
На вашем устройстве: программу выполняет браузер, а не наш сервер. При этом редактор, как и при запуске на сервере, сохраняет каждый запуск вместе с кодом - для истории запусков и статистики.
Какие библиотеки доступны?
В режиме «Браузерный Python» загружаются NumPy, pandas, SciPy, Matplotlib, scikit-learn и openpyxl. На сервере выполнения установлено больше пакетов, в том числе seaborn и requests.
Почему первый запуск медленнее?
Сначала браузер скачивает сам Python и пакеты для работы с данными (NumPy, pandas, SciPy, Matplotlib и scikit-learn) - всего около 35 МБ. Они сохраняются в кэше, поэтому следующие запуски начинаются гораздо быстрее.
Работает ли input() в браузере?
В браузерном режиме строки ввода нужно указать заранее, до запуска. Если программа задаёт вопросы по одному, используйте сервер выполнения - он включён по умолчанию.