Ядро Jupyter для Deno
Deno поставляется со встроенным ядром Jupyter, которое позволяет писать на JavaScript и TypeScript, использовать веб-API и API Deno, а также импортировать пакеты npm прямо в интерактивные блокноты.
deno jupyter всегда запускается с --allow-all
В настоящее время весь код, выполняемый в ядре Jupyter, запускается с флагом --allow-all. Это временное ограничение, которое будет устранено в будущем.
Быстрый старт
Запустите deno jupyter и следуйте инструкциям.
Чтобы принудительно установить ядро, можно запустить deno jupyter --install. Deno предполагает, что команда jupyter доступна в вашем PATH.
После завершения установки ядро Deno будет доступно в диалоге создания блокнота в JupyterLab и классическом блокноте:

Ядро Deno Jupyter можно использовать в любом редакторе, поддерживающем блокноты Jupyter.
VS Code
- Установите расширение Jupyter для VS Code
- Откройте или создайте файл блокнота: откройте палитру команд (Ctrl+Shift+P) и выберите «Создать: новый блокнот Jupyter». Также можно вручную создать файл с расширением «.ipynb».
- Открыв новый или существующий блокнот, нажмите кнопку создания нового блокнота Jupyter, выберите «Ядра Jupyter», а затем Deno
Среды разработки JetBrains
Блокноты Jupyter доступны сразу после установки.
Вывод форматированного содержимого
Пространства имён Deno.jupyter предоставляют вспомогательные функции для отображения форматированного содержимого в блокнотах с помощью поддерживаемых Jupyter типов MIME.
Проще всего вывести форматированное содержимое, вернув объект с методом [Symbol.for("Jupyter.display")].
Этот метод должен возвращать словарь, сопоставляющий тип MIME со значением, которое нужно отобразить.
{
[Symbol.for("Jupyter.display")]() {
return {
// Plain text content
"text/plain": "Hello world!",
// HTML output
"text/html": "<h1>Hello world!</h1>",
}
}
}
Пример объекта, возвращающего обычный текст и вывод в формате HTML.
Вместо ввода Symbol.for("Jupyter.display") можно также использовать Deno.jupyter.$display
Это обычная функция, поэтому для форматирования вывода можно использовать любую библиотеку — например, @std/fmt/colors, чтобы добавить цвет:
import * as colors from "jsr:@std/fmt/colors";
{
[Deno.jupyter.$display]() {
return {
"text/plain": colors.green("Hello world"),
}
}
}
Также можно использовать функцию Deno.jupyter.display, чтобы напрямую отобразить набор MIME:
await Deno.jupyter.display({
"text/plain": "Hello, world!",
"text/html": "<h1>Hello, world!</h1>",
"text/markdown": "# Hello, world!",
}, { raw: true });
Интерфейс блокнота автоматически выберет для отображения «самый насыщенный» тип MIME с учётом своих возможностей.
Deno.jupyter предоставляет несколько вспомогательных методов для вывода распространённых типов мультимедиа в форматированном виде.
Deno.jupyter.html — это шаблонный тег, который отображает переданную строку в виде HTML в блокноте.
Deno.jupyter.html`<h1>Hello, world!</h1>
<h2>From Deno kernel</h2>
<p>Lorem ipsum <i>dolor</i> <b>sit</b> <u>amet</u></p>`;
Deno.jupyter.md — это шаблонный тег, который отображает переданную строку в виде документа Markdown в блокноте.
Deno.jupyter
.md`# Notebooks in TypeScript via Deno 
**Interactive compute with Jupyter _built into Deno_!**`;
Deno.jupyter.svg — это шаблонный тег, который отображает переданную строку в виде изображения SVG в блокноте.
Deno.jupyter.svg`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />
</svg>`;
Deno.jupyter.image — это функция, отображающая изображение в формате JPG или PNG. Можно передать путь к файлу или уже прочитанные байты:
Deno.jupyter.image("./cat.jpg");
const data = Deno.readFileSync("./dog.png");
Deno.jupyter.image(data);
API prompt и confirm
В блокноте можно использовать веб-API prompt и confirm, чтобы дождаться ввода пользователя.
Публикация сообщений в канале IO pub
Deno.jupyter.broadcast позволяет публиковать сообщения в канале IO pub и выводить обновления в реальном времени во время выполнения ячейки.
Рассмотрим пример, в котором перед началом вычислений выводится одно сообщение, а после их завершения — другое:
await Deno.jupyter.broadcast("display_data", {
data: { "text/html": "<b>Processing...</b>" },
metadata: {},
transient: { display_id: "progress" },
});
// Pretend we're doing an expensive compute
await new Promise((resolve) => setTimeout(resolve, 1500));
await Deno.jupyter.broadcast("update_display_data", {
data: { "text/html": "<b>Done</b>" },
metadata: {},
transient: { display_id: "progress" },
});
Примеры
Вот пример использования @observablehq/plot для создания диаграммы:
import { document, penguins } from "jsr:@ry/jupyter-helper";
import * as Plot from "npm:@observablehq/plot";
let p = await penguins();
Plot.plot({
marks: [
Plot.dot(p.toRecords(), {
x: "culmen_depth_mm",
y: "culmen_length_mm",
fill: "species",
}),
],
document,
});
Более сложные примеры с использованием библиотек для анализа и визуализации данных, таких как Polars, Observable и d3, см. на странице https://github.com/rgbkrk/denotebooks.
Интеграция с jupyter console
Ядро Deno Jupyter также можно использовать в REPL jupyter console. Для этого запустите консоль с параметром jupyter console --kernel deno.

Последнее обновление:
© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/runtime/reference/cli/jupyter