#kernel #jupyter #notebook #evcxr #run #install #version

app evcxr_jupyter

为Rust编写的Jupyter内核

38个版本

0.17.0 2023年12月17日
0.16.0 2023年10月22日
0.15.1 2023年7月13日
0.14.2 2023年1月2日
0.2.0 2018年10月8日

136编程语言 中排名

Download history 212/week @ 2024-04-08 255/week @ 2024-04-15 283/week @ 2024-04-22 249/week @ 2024-04-29 247/week @ 2024-05-06 240/week @ 2024-05-13 246/week @ 2024-05-20 225/week @ 2024-05-27 248/week @ 2024-06-03 214/week @ 2024-06-10 299/week @ 2024-06-17 286/week @ 2024-06-24 175/week @ 2024-07-01 178/week @ 2024-07-08 162/week @ 2024-07-15 135/week @ 2024-07-22

每月671次下载

MIT/Apache

355KB
7.5K SLoC

Evcxr Jupyter内核

Binder

Latest Version

为Rust编程语言编写的Jupyter内核。

安装

如果您尚未安装Rust,请按照以下说明进行操作。

您可以从GitHub仓库下载预构建的二进制文件,从存档中提取它并将其放置在您的路径上的某个位置,或者通过运行以下命令从源代码构建:

cargo install --locked evcxr_jupyter

无论是使用预构建的二进制文件还是您自己构建的二进制文件,您都需要运行以下命令以将内核注册到Jupyter中。

evcxr_jupyter --install

默认情况下,evcxr_jupyter --install将内核安装到用户本地目录中,例如:$HOME/.local/share/jupyter/kernels

如果您使用的操作系统版本较旧或使用与预构建二进制文件编译时不同的libc,则需要使用上述命令从源代码构建。

要实际使用evcxr_jupyter,您需要安装Jupyter笔记本。

  • Debian或Ubuntu Linux: sudo apt install jupyter-notebook
  • Mac: 您可能可以brew install jupyter
  • Windows,或者如果上述选项对您不起作用,请参阅https://jupyter.pythonlang.cn/install

您还需要安装Rust标准库的源代码。如果您已经使用rust-analyzer,则可能已经安装了它。要使用rustup安装,请运行

rustup component add rust-src

运行

要启动Jupyter笔记本,请运行

jupyter notebook

启动后,它应在您的网页浏览器中打开一个页面。在右侧寻找“新建”菜单,然后从中选择“Rust”。

使用信息

Evcxr既是REPL也是Jupyter内核。有关两者共有的信息,请参阅Evcxr通用使用

自定义输出

单元格中的最后一个表达式会被打印。默认情况下,我们将使用调试格式化器输出纯文本。如果您愿意,可以提供一个函数来以HTML(或图像)的形式显示您的类型(或他人的类型)。为此,类型需要实现一个名为evcxr_display的方法,然后应向标准输出打印一个或多个带有MIME类型的块。每个块以包含EVCXR_BEGIN_CONTENT后跟MIME类型的一行开始,然后是换行符,内容,然后以包含EVCXR_END_CONTENT的一行结束。

例如,以下展示了如何为Matrix类型提供自定义显示函数。您可以将此代码复制到Jupyter笔记本单元格中尝试。

use std::fmt::Debug;
pub struct Matrix<T> {pub values: Vec<T>, pub row_size: usize}
impl<T: Debug> Matrix<T> {
    pub fn evcxr_display(&self) {
        let mut html = String::new();
        html.push_str("<table>");
        for r in 0..(self.values.len() / self.row_size) {
            html.push_str("<tr>");
            for c in 0..self.row_size {
                html.push_str("<td>");
                html.push_str(&format!("{:?}", self.values[r * self.row_size + c]));
                html.push_str("</td>");
            }
            html.push_str("</tr>");
        }
        html.push_str("</table>");
        println!("EVCXR_BEGIN_CONTENT text/html\n{}\nEVCXR_END_CONTENT", html);
    }
}
let m = Matrix {values: vec![1,2,3,4,5,6,7,8,9], row_size: 3};
m

最好一次性打印整个块,或者锁定标准输出然后打印块。这应该可以确保同时没有其他内容打印到标准输出(至少没有其他Rust代码)。

如果内容是二进制(例如,MIME类型“image/png”),则应进行base64编码。

请求输入

:dep evcxr_input
let name = evcxr_input::get_string("Name?");
let password = evcxr_input::get_password("Password?");

从git头安装

如果您想尝试git中的修复,可以使用以下命令直接从git安装:

cargo install --force --git https://github.com/evcxr/evcxr.git evcxr_jupyter

第三方集成

有几个Rust包提供了Evcxr集成

  • Petgraph
    • 图(带有节点和边的图)
  • Plotly
    • 多种不同类型的图表
  • Plotters
    • 图表
  • Showata
    • 显示图像、向量、矩阵(nalgebra和ndarray)

第三方资源

  • Eng. Mahmoud Harmouch编写了一系列文章并开发了一个列表,其中包含用于各种数据分析任务的所有工具,这些任务已在此存储库中记录。

  • Shahin Rostami博士编写了一本名为Data Analysis with Rust Notebooks的书。它使用现在有点过时的库版本,但示例仍然有效。他还发布了一个非常好的入门视频

限制

  • 不要要求Jupyter“中断内核”,这不会起作用。Rust线程不能被中断。

卸载

evcxr_jupyter --uninstall
cargo uninstall evcxr_jupyter

依赖

~36–54MB
~1M SLoC