examples/plugin/README.md
An example of a Rust app that uses Python for a plugin. A Python extension module built using PyO3 and maturin is used to provide
interface types that can be used to exchange data between Rust and Python. This also deals with how to separately test and load python modules.
To run the app itself, you only need to run
cargo run
It will build the app, as well as the plugin API, then run the app, load the plugin and show it working.
The plugin API is in a separate crate plugin_api, so you can test it separately from the main app.
To build the API only package, install and build with maturin:
pip install maturin
cd plugin_api
maturin build
Alternatively, install nox and run the tests inside an isolated environment:
nox
Use cargo-generate:
$ cargo install cargo-generate
$ cargo generate --git https://github.com/PyO3/pyo3 examples/plugin
(cargo generate will take a little while to clone the PyO3 repo first; be patient when waiting for the command to run.)