Building Golem Components in Python
Building Golem components written in Python involves two steps:
Package the Python code into a WASM component
The componentize subcommand of the componentize-py tool packages the Python code and the Python interpreter into a single WebAssembly component:
$ componentize-py componentize main -o py_example.wasmNote that the componentize-py tool respects the VIRTUAL_ENV environment variable, so make sure
to activate the virtualenv if there are any Python dependencies used by your component.
Reducing the size of the component
The output of compoenntize-py is large. It is possible to strip some parts of it to reduce the size by about 50% using the wasm-tools strip command:
$ wasm-tools strip -a py_example.wasm -o py_example_stripped.wasmGenerate the Python bindings from the WIT files
The bindings subcommand of the componentize-py tool generates the module containing the generated bindings:
$ componentize-py bindings generated_bindingsThis will generate bindings into the bindings directory.
Make sure to not actually use these bindings to invoke imported functions, as they don't have any implementation.