查看我们在WebAssembly上运行的在线演示。
Rustpython需要锈最新稳定版本(例如2023年2月7日,例如1.67.1)。如果您目前没有在系统上安装Rust,则可以按照Rustup.rs的说明进行操作。
要检查您当前正在运行的Rust版本,请使用rustc --version
。如果您想更新, rustup update stable
将更新您的Rust安装到最新的稳定版本。
要在本地构建Rustpython,请首先克隆源代码:
git clone https://github.com/RustPython/RustPython
然后,您可以更改为Rustpython目录并运行演示(注意: --release
需要释放以防止Windows上的堆栈溢出):
$ cd RustPython
$ cargo run --release demo_closures.py
Hello, RustPython !
或使用交互式外壳:
$ cargo run --release
Welcome to rustpython
>>>>> 2+2
4
注意:对于Windows用户,请将RUSTPYTHONPATH
环境变量设置为项目目录中的Lib
路径。 (例如,当Rustpython目录为C:RustPython
,将RUSTPYTHONPATH
设置为C:RustPythonLib
)
您还可以使用以下内容安装和运行Rustpython:
$ cargo install --git https://github.com/RustPython/RustPython
$ rustpython
Welcome to the magnificent Rust Python interpreter
>>>>>
如果您想提出HTTPS请求,则可以启用ssl
功能,这也使您可以安装pip
软件包管理器。请注意,在Windows上,您可能需要安装OpenSSL,也可以启用ssl-vendor
功能,该功能为您编译OpenSSL,但需要C编译器,Perl和make
。 OpenSSL版本3是可以预期的,并在CI中进行了测试。较旧的版本可能行不通。
一旦安装了SSL支持的Rustpython,您可以通过运行安装PIP:
cargo install --git https://github.com/RustPython/RustPython --features ssl
rustpython --install-pip
您也可以通过conda
软件包管理器安装Rustpython,尽管这不是正式支持,并且可能已经过时了:
conda install rustpython -c conda-forge
rustpython
您可以将Rustpython编译到独立的WebAssembly WASI模块中,以便它可以在任何地方运行。
建造
cargo build --target wasm32-wasi --no-default-features --features freeze-stdlib,stdlib --release
由Wasmer经营
wasmer run --dir ` pwd ` -- target/wasm32-wasi/release/rustpython.wasm ` pwd ` /extra_tests/snippets/stdlib_random.py
由WAPM运营
$ wapm install rustpython
$ wapm run rustpython
>>>>> 2+2
4
您可以使用以下方式构建WebAssembly WASI文件
cargo build --release --target wasm32-wasi --features= " freeze-stdlib "
注意:我们使用
freeze-stdlib
在二进制中包括标准库。一旦rustup target add wasm32-wasi
您还必须运行。
Rustpython有一个非常实验性的JIT编译器,该编译器将Python的功能编译到本机代码中。
默认情况下,未启用JIT编译器,它已使用jit
货物功能启用。
cargo run --features jit
这需要安装AutoConf,Automake,Libtool和Clang。
要编译函数,请在其上调用__jit__()
。
def foo ():
a = 5
return 10 + a
foo . __jit__ () # this will compile foo to native code and subsequent calls will execute that native code
assert foo () == 15
有兴趣在用Rust编写的应用程序中揭露Python脚本,也许是为了快速调整Rust的编译时间会抑制的逻辑?然后examples/hello_embed.rs
和examples/mini_repl.rs
可能会有所帮助。
Rustpython正在开发中,虽然口译员肯定可以在有趣的用例中使用,例如在WASM中运行Python并嵌入Rust Project,但请注意,Rustpython并未完全准备好生产。
贡献非常欢迎!有关此信息的更多信息,请参见我们的贡献部分。
结帐有关会议的谈话:
尽管Rustpython是一个相当年轻的项目,但一些人使用它来制作很酷的项目:
目前与项目的其他领域一起,文档仍处于早期阶段。
您可以阅读在线文档以获取最新版本或用户指南。
您还可以通过运行在本地生成文档:
cargo doc # Including documentation for all dependencies
cargo doc --no-deps --all # Excluding all dependencies
然后可以在target/doc
目录中找到文档HTML文件,也可以--open
到以前的命令上,以在默认浏览器上自动打开文档。
有关组件的高级概述,请参见架构文档。
贡献非常受欢迎,在许多情况下,我们很乐意通过PRS或Discord指导贡献者。请参阅《开发指南》,以获取有关开发的提示。
考虑到这一点,请注意此项目由志愿者维护,一些最好的入门方法如下:
大多数任务在问题跟踪器中列出。如果您想开始编码,请检查标有良好第一期的问题。
为了增强CPYTHON的兼容性,请尝试通过检查本文来增加UNITSEST覆盖范围:如何为Cpython Unittest贡献Rustpython
另一种方法是检查源代码:内置功能和对象方法通常是最简单,最简单的贡献方法。
您也可以简单地运行./whats_left.py
即可帮助查找任何未完成的方法。
请参阅此文档
在不和谐上与我们聊天。
我们的行为守则可以在这里找到。
最初的工作是基于Windelbouwman/rspython和Shandeu/Rustpython
这些是与相关项目的一些有用链接:
该项目已根据MIT许可获得许可。请参阅许可证文件以获取更多详细信息。
该项目徽标已根据CC-BY-4.0许可获得许可。有关更多详细信息,请参见许可证文件。