To install wasmtime-py, run this command in your terminal:
$ pip install wasmtimeThe package currently supports 64-bit builds of Python 3.9+ on Windows, macOS, and Linux, for x86_64 and arm64 architectures.
wasmtime-py follows the Wasmtime versioning scheme, with a new major version being released every month. As with Wasmtime itself, new major versions of wasmtime-py can contain changes that break code written against the previous major version.
Since every installed Python package needs to agree on a single version of wasmtime-py, to use the upper bound on the major version in the dependency requirement should be bumped reguarly, ideally as soon as a new wasmtime-py version is released. To automate this process it is possible to use the whitequark/track-pypi-dependency-version script. YoWASP/runtime is an example of a project that automatically publishes releases on PyPI once a new version of wasmtime-py is released if it passes the testsuite.
In this example, we compile and instantiate a WebAssembly module and use it from Python:
from wasmtime import Store, Module, Instance, Func, FuncType store = Store() module = Module(store.engine, """ (module (func $hello (import "" "hello")) (func (export "run") (call $hello)) ) """) def say_hello(): print("Hello from Python!") hello = Func(store, FuncType([], []), say_hello) instance = Instance(store, module, [hello]) run = instance.exports(store)["run"] run(store)Be sure to check out the examples directory, which has other usage patterns as well as the full API documentation of the wasmtime-py package.
If your WebAssembly module works this way, then you can also import the WebAssembly module directly into Python without explicitly compiling and instantiating it yourself:
# Import the custom loader for `*.wasm` files import wasmtime.loader # Assuming `your_wasm_file.wasm` is in the python load path... import your_wasm_file # Now you're compiled and instantiated and ready to go! print(your_wasm_file.run())Components are also supported in wasmtime-py. For more information see the documentation of wasmtime.component. Using a component is similar to using core wasm modules, and for examples see the tests/component/ directory.
See CONTRIBUTING.md.