Schauen Sie sich unsere Online -Demo an, die auf WebAssembly ausgeführt wird.
Rustpython benötigt die neueste stabile Version von Rust (z. B. 1.67.1 am 7. Februar 2023). Wenn Sie derzeit nicht Rost in Ihrem System installiert haben, können Sie dies tun, indem Sie den Anweisungen bei Rustup.rs befolgen.
Um die Version von Rost zu überprüfen, die Sie derzeit ausführen, verwenden Sie rustc --version
. Wenn Sie aktualisieren möchten, aktualisiert rustup update stable
Ihre Rust -Installation auf die neueste stabile Version.
Um Rustpython lokal zu bauen, klonen Sie zunächst den Quellcode:
git clone https://github.com/RustPython/RustPython
Anschließend können Sie das Rustpython -Verzeichnis wechseln und die Demo ausführen (Hinweis: --release
ist erforderlich, um einen Stapelüberlauf unter Windows zu verhindern):
$ cd RustPython
$ cargo run --release demo_closures.py
Hello, RustPython !
Oder verwenden Sie die interaktive Shell:
$ cargo run --release
Welcome to rustpython
>>>>> 2+2
4
Hinweis: Setzen Sie für Windows -Benutzer die Variable RUSTPYTHONPATH
-Umgebung als Lib
-Pfad im Projektverzeichnis. (ZB, wenn Rustpython -Verzeichnis C:RustPython
ist, setze RUSTPYTHONPATH
als C:RustPythonLib
)
Sie können Rustpython auch mit Folgendem installieren und ausführen:
$ cargo install --git https://github.com/RustPython/RustPython
$ rustpython
Welcome to the magnificent Rust Python interpreter
>>>>>
Wenn Sie HTTPS -Anfragen stellen möchten, können Sie die ssl
-Funktion aktivieren, mit der Sie auch den pip
-Paket -Manager installieren können. Beachten Sie, dass Sie unter Windows möglicherweise OpenSSL installieren müssen oder die ssl-vendor
-Funktion stattdessen aktivieren können, die OpenSSL für Sie zusammenstellt, jedoch einen C-Compiler, Perl und make
benötigt. OpenSSL Version 3 wird in CI erwartet und getestet. Ältere Versionen funktionieren möglicherweise nicht.
Sobald Sie Rustpython mit SSL -Unterstützung installiert haben, können Sie PIP durch Ausführen installieren:
cargo install --git https://github.com/RustPython/RustPython --features ssl
rustpython --install-pip
Sie können Rustpython auch über den conda
Paket Manager installieren, obwohl dies nicht offiziell unterstützt wird und möglicherweise veraltet ist:
conda install rustpython -c conda-forge
rustpython
Sie können Rustpython zu einem eigenständigen WebAssembly -WASI -Modul kompilieren, damit es überall ausgeführt werden kann.
Bauen
cargo build --target wasm32-wasi --no-default-features --features freeze-stdlib,stdlib --release
Von Wasmer betrieben
wasmer run --dir ` pwd ` -- target/wasm32-wasi/release/rustpython.wasm ` pwd ` /extra_tests/snippets/stdlib_random.py
Betrieben von WAPM
$ wapm install rustpython
$ wapm run rustpython
>>>>> 2+2
4
Sie können die WebAssembly -WASI -Datei erstellen mit:
cargo build --release --target wasm32-wasi --features= " freeze-stdlib "
HINWEIS: Wir verwenden die
freeze-stdlib
, um die Standardbibliothek innerhalb der Binärdatei einzuschließen. Sie müssen auch laufen, sobaldrustup target add wasm32-wasi
.
Rustpython hat einen sehr experimentellen JIT -Compiler, der Python -Funktionen in nativen Code zusammenstellt.
Standardmäßig ist der JIT -Compiler nicht aktiviert, es ist mit der jit
-Frachtfunktion aktiviert.
cargo run --features jit
Dies erfordert, dass Autoconf, Automake, Libtool und Clang installiert werden müssen.
Um eine Funktion zu kompilieren, rufen Sie __jit__()
darauf auf.
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
Möchten Sie Python Scripting in einer in Rust geschriebenen Anwendung aufdecken, um möglicherweise die Logik schnell zu optimieren, wo die Kompilierungszeiten von Rust hemmend sind? Dann können examples/hello_embed.rs
und examples/mini_repl.rs
hilfreich sein.
Rustpython ist in der Entwicklung, und während der Dolmetscher sicherlich in interessanten Anwendungsfällen wie Python in WASM und in ein Rust-Projekt einbettet, beachten Sie, dass Rustpython nicht vollständig produktionsbereit ist.
Beitrag ist mehr als willkommen! Weitere Informationen dazu finden Sie in unserem Beitragsabschnitt.
Checkout dieser Gespräche über Konferenzen:
Obwohl Rustpython ein ziemlich junges Projekt ist, haben einige Leute es benutzt, um coole Projekte zu machen:
Derzeit ist zusammen mit anderen Bereichen des Projekts die Dokumentation noch in einer frühen Phase.
Sie können die Online -Dokumentation für die neueste Version oder den Benutzerhandbuch lesen.
Sie können auch lokal Dokumentation erstellen, indem Sie ausgeführt werden:
cargo doc # Including documentation for all dependencies
cargo doc --no-deps --all # Excluding all dependencies
Dokumentation HTML -Dateien finden Sie dann im target/doc
-Verzeichnis oder Sie können an den vorherigen Befehlen --open
um die Dokumentation automatisch in Ihrem Standardbrowser zu öffnen.
Eine Übersicht über die Komponenten auf hoher Ebene finden Sie im Architekturdokument.
Beiträge sind mehr als willkommen, und in vielen Fällen führen wir gerne die Mitwirkenden durch PRS oder auf Zwietracht. Weitere Tipps zu Entwicklungen finden Sie im Entwicklungsleitfaden.
In diesem Sinne beachten Sie bitte, dass dieses Projekt von Freiwilligen gepflegt wird. Einige der besten Möglichkeiten zum Einstieg finden Sie unten:
Die meisten Aufgaben sind im Problem Tracker aufgeführt. Überprüfen Sie Probleme mit einem guten ersten Problem, wenn Sie mit dem Codieren beginnen möchten.
Um die Kompatibilität von CPython zu verbessern, versuchen Sie, die unitteste Berichterstattung durch Überprüfen dieses Artikels zu erhöhen: So können Sie zu Rustpython von CPython Unittest beitragen
Ein weiterer Ansatz besteht darin, den Quellcode zu überprüfen: Inbusing -Funktionen und Objektmethoden sind häufig die einfachste und einfachste Möglichkeit, einen Beitrag zu leisten.
Sie können auch einfach rennen ./whats_left.py
, um eine unimplementierte Methode zu finden.
Siehe diesen Doc
Chatten Sie mit uns über Discord.
Unser Verhaltenskodex finden Sie hier.
Die erste Arbeit basierte auf Windelbouwman/Rspython und Shelyu/Rustpython
Dies sind einige nützliche Links zu verwandten Projekten:
Dieses Projekt ist unter der MIT -Lizenz lizenziert. Weitere Informationen finden Sie in der Lizenzdatei.
Das Projektlogo ist unter der CC-BY-4.0-Lizenz lizenziert. Weitere Informationen finden Sie in der Datei lizenz-Logo-Datei.