Rust交互式编程环境搭建

简介: 数据科学和机器学习社区似乎压倒性地偏爱Jupyter Notebook。本文将带领大家一步一步搭建起Rust交互式编程环境。让Jupyter 可以运行Rust代码。

Rust交互式编程环境搭建

数据科学和机器学习社区似乎压倒性地偏爱Jupyter Notebook。这主要是因为在数据科学领域使用Jupyter Notebook有三大优势:

  1. Jupyter Notebook将IPython的交互式特点发挥到了极致

    熟悉机器学习和数据分析的朋友应该知道:分析和建模是非常碎片化的工作,而每一个片段又有着非常强的独立性,甚至可以说除了数据本身之外,每一块的代码之间并没有很强的关联性。数据分析和建模的过程往往是一个不断实验的过程。我们需要一次又一次地改变数据预处理方式、尝试不同的特征工程方案、不厌其烦地调整模型参数。每一步工作都需要反复实验、反复修改,而下一板块需要用到的只不过是上一板块输出的数据。通过Jupyter Notebook,我们可以以最快的速度得知自己做出的调整是好是坏,并尽快进入到下一次的实验当中。

  2. Jupyter Notebook更利于汇报和教学

    因为Jupyter Notebook本身的模块化和内容的清晰化,使其天生具备如PPT一般的展现工作成果的功能。并且Jupyter Notebook中可以将输出结果嵌套在Notebook中,并且支持Markdown写作,这就让我们可以在Jupyter Notebook中输入任何需要展现的内容,并且这些内容都会以一种有组织、有层次、逻辑严密的形式展示出来。

  3. 内置大量魔术命令

    Jupyter Notebook 内置大量的魔术命令(比如%Matplotlib inline,%timeit等),可以方便的输出我们关心的指标,帮我们更快地进行分析。

上述三点让Jupyter Notebook成为数据科学领域的最佳工具。

Jupyter Notebook的默认内核是Python,也可以替换成R,JavaScript 等动态语言。编译型语言,例如C++、Java,需要额外的扩展工具来支持。Rust作为静态编译型语言,自然也需要外部工具扩展来实现交互式编程,其中最成熟的当属Google开源的EvCxR(Evaluation Context for Rust)。本文将带领大家一步一步搭建起Rust交互式编程环境。

maxresdefault.jpg

1. 安装Miniconda

有很多方法可以安装并建立交互式编程环境,这里我推荐用Miniconda

Miniconda是一款小巧的python环境管理工具,安装包大约只有50M多点,其安装程序中包含conda软件包管理器和Python。一旦安装了Miniconda,就可以使用conda命令安装任何其他软件工具包并创建环境等。

你也可以不装Miniconda,直接安装Jupyter Lab。但我建议用Miniconda,因为除了交互式编程环境,我们还需要Miniconda来管理包和虚拟环境。

Miniconda的官网上有详细的安装教程。如果你像我一样使用Linux,你可以在控制台运行如下命令:

wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh

chmod +x Miniconda3-latest-Linux-x86_64.sh 

./Miniconda3-latest-Linux-x86_64.sh

上面的命令将下载Miniconda的安装脚本并启动交互式安装。按照提示一步步完成安装,当你看到

Thank you for installing Miniconda3!

说明安装成功。

2. 创建环境

Miniconda安装好后,我们需要创建并配置环境。如果在安装时已经将Miniconda加入到环境变量PATH中,那么你可以直接在控制台、Poweshell或CMD中运行conda命令。

我们可以通过下面的命令创建并配置环境:

conda create -n rustenv python=3

其中rustenv是环境名,你可以替换成任意你喜欢的名字。

上面的命令会创建一个名叫rustenv的conda环境并下载最新的Python 3包。你将看到一个即将下载安装的包的列表,并询问你是否继续。输入y进行安装。等待安装成功后,你将看到如下信息:

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
# $ conda activate rustenv
#
# To deactivate an active environment, use
#
# $ conda deactivate

消息提示输入如下命令激活并进入环境:

conda activate rustenv

输入执行后你将看到控制台提示符最前端会出现括号括起来的环境名。

(rustenv) jarod_laptop:~ jarod$

命令行提示符前的环境名有助于你识别当前在那个环境下。每次电脑重启,都需要执行conda activate rustenv进入rustenv环境。

3. 安装Jupyter Lab

环境安装好后,你可以输入jupyter lab启动Jupyter Lab实例。但是,如果你是新建的环境,执行jupyter lab会看到一个报错,

(rustenv) jarod_laptop:~ jarod$ jupyter lab
-bash: jupyter: command not found

这是因为没有安装Jupyter Lab造成的。接下来我们通过如下命令安装Jupyter Lab:

conda install -c conda-forge jupyterlab

4. 安装Jupyter Lab扩展

Jupyter Lab有很多扩展插件可以实现丰富的扩展功能,其中一个非常有用的插件是plotly。它可以让Jupyter渲染Plotly可视化图表。在conda环境下执行下面的命令即可安装:

jupyter labextension install jupyterlab-plotly

这个安装可能需要花点时间。安装成功后控制台会再次出现输入提示符。

Jupyter Lab还支持主题换肤,如果你喜欢深色主题,可以试一下下面这个主题:

jupyter labextension install @shahinrostami/theme-purple-please

p1.png

图1. Jupyter Lab深色主题

5. 安装Rust

有很多中方法可以安装Rust,大家可以参考Rust官方教程。推荐用rustup安装。我用的操作系统是Linux,可以在控制台通过如下命令安装:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

本专栏的示例代码兼容多个Rust版本,由于我本机的Rust版本为1.65.0,我可以保证所有代码和包都可以在Rust 1.65.0下正常运行。你可以通过下面命令将Rust版本锁定为1.65.0

rustup default 1.65.0

运行上面代码可能会提示你将Cargo加入环境变量PATH,

source $HOME/.cargo/env

其他控制台,如zsh,输入上面命令可能无效,你可以用跟基本的命令添加环境变量

export PATH="$HOME/.cargo/bin:$PATH"

添加完后重启控制台,确保环境变量写入。你可以输入

cargo version

确认是否安装成功。如果控制台上输出cargo版本(cargo 1.65.0),说明安装好了。

6. 安装 EvCxR

接下来我们来安装EvCxR Jupyter内核。EvCxR可以让Rust运行在Jupyter Notebook上。你可以参考官网的方法来完成EvCxR的安装。我这里推荐的安装方法是:

cargo install evcxr_jupyter
evcxr_jupyter --install

7. 小试牛刀

安装完EvCxR后,我们就可以试一下整个环境能够跑起来。打开控制台,进入上面我们创建的conda环境,然后运行如下命令:

jupyter lab

这条命令将启动Jupyter Lab服务,并打开浏览器显示Jupyter Lab的前端界面。

p2.png

图2. Jupyter Lab前端界面

如果在界面上Notebook和Console中能看到Rust图标,这就说明我们环境搭建好了。

我们可以新建一个Rust Notebook。点击Notebook栏的Rust图标就可以创建一个以Rust为内核的notebook。如果环境搭建没问题,那么会在当前目录下新建一个名为Untitled.ipynb的空白notebook。我们可以试着在上面写一些Rust代码,按照管理,我们来写个“Hello World!”:

println!("Hello World!");

如果环境配置一切正常,那么运行上面代码你将看到输出Hello World!

总结

本章我们已经下载、安装、配置和测试了我们的Rust交互式编程环境。我们喜爱的Jupyter环境现在可以运行Rust代码了!随着Rust的日渐壮大,很多原本Python上好用的包在Rust都有相对应的实现。后面我将陆续给大家介绍Python机器学习常用包的Rust替代,让大家逐渐用Rust替代Python完成机器学习任务。

目录
相关文章
|
1月前
|
Rust 安全 Linux
如何使用Rust进行系统编程?
在 Rust 中,要调用系统调用并与底层 C 函数进行交互,通常会使用 `libc` crate。`libc` 提供了 Rust 到 C 的 FFI(Foreign Function Interface)绑定,允许 Rust 代码调用和使用底层的 C 函数和系统调用。
106 0
|
28天前
|
Rust 安全 测试技术
使用Rust进行内存安全系统编程
【5月更文挑战第31天】Rust是一种保证内存安全的系统编程语言,通过所有权和借用系统防止内存错误,如内存泄漏和数据竞争。它的高性能、并发安全和跨平台特性使其在系统编程中占有一席之地。学习Rust涉及理解基本语法、所有权系统及使用标准库。通过案例分析,展示了如何在内存安全的前提下编写文件服务器。随着Rust的成熟,它在系统编程领域的应用前景广阔。
|
1月前
|
JSON Rust 监控
公司电脑监控软件的Rust编程实现与安全性提升
这篇文章介绍了如何使用Rust编程语言开发一个基础的企业电脑监控软件,包括初始化项目、捕获键盘输入、监控网络活动。同时,文章强调了提升安全性的重要性,提出了数据加密(如AES)和完整性校验(如SHA-256)的方法,并展示了如何将监控数据自动提交到远程服务器。通过Rust,开发者能创建高效且安全的监控解决方案。
104 2
|
1月前
|
Rust 安全 程序员
使用Rust进行系统编程:安全性优势深度解析
【5月更文挑战第14天】Rust,Mozilla开发的系统编程语言,以其内存安全、并发支持和静态类型系统在系统编程中脱颖而出。所有权和借用检查机制消除内存错误,无锁并发原语提升安全性,静态类型减少运行时错误,最小权限原则降低权限风险。强大的社区支持和安全审计进一步确保了代码的安全性和稳定性,使Rust成为安全高效系统编程的理想选择。
|
1月前
|
缓存 Rust 前端开发
【一起学Rust | 框架篇 | Tauri2.0框架】Tauri2.0环境搭建与项目创建
【一起学Rust | 框架篇 | Tauri2.0框架】Tauri2.0环境搭建与项目创建
299 0
|
1月前
|
Rust 安全 测试技术
Rust并发编程实践:快速入门系统级编程
Rust是一门现代的系统编程语言,它的设计目标是提供安全性、并发性和高性能。Rust的出现是为了解决其他编程语言在这些方面存在的一些问题和挑战。
|
8月前
|
Rust 监控 并行计算
用Rust构建电脑网络监控软件:内存安全性和多线程编程
在当今数字化世界中,网络安全一直是至关重要的问题。电脑网络监控软件是确保网络系统安全和高效运行的关键工具。然而,编写电脑网络监控软件需要处理复杂的多线程编程和内存安全性问题。Rust编程语言提供了一种强大的方式来构建安全的电脑网络监控软件,同时避免了许多常见的编程错误。
302 0
|
1月前
|
Rust 索引
Rust 编程小技巧摘选(6)
Rust 编程小技巧摘选(6)
53 1
Rust 编程小技巧摘选(6)
|
1月前
|
Rust
Rust 编程小技巧摘选(8)
Rust 编程小技巧摘选(8)
128 0
Rust 编程小技巧摘选(8)
|
1月前
|
Go Python Rust
Rust 编程小技巧摘选(7)
Rust 编程小技巧摘选(7)
57 0
Rust 编程小技巧摘选(7)