查看我們在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許可獲得許可。有關更多詳細信息,請參見許可證文件。