pyoxy/docs/pyoxy_overview.rst
.. _pyoxy_overview:
pyoxy ExecutablePyOxy is distributed as a pyoxy compiled executable. This executable
links against a Python implementation/distribution (i.e. libpython).
The Python implementation/distribution and any resources defined in its standard
library may be compiled statically into the pyoxy executable. This
enables pyoxy to function as a single file Python distribution. (This is
how official builds of pyoxy are distributed.)
pyoxy's int main() is implemented in Rust. It simply parses the process
arguments and executes a sub-command.
Commands like pyoxy run-yaml (see :ref:pyoxy_yaml) give you very low-level
control over the behavior of the Python interpreter: much lower than what is
possible with python command arguments or environment variables.
This control can be useful for iterating/testing on different Python embedding
configurations (such as how you would need to configure PyOxidizer). The control
can also be useful for use in automated testing where you may want to simulate
an embedded Python configuration but don't want to produce your own executable
for each configuration variation. With commands like pyoxy run-yaml, you
can simply define a YAML file defining the interpreter configuration and use
a single executable for driving the Python interpreter N ways.
pyoxy supplements the built-in features of python with its own.
With pyoxy, you can:
oxidized_importer extension module for importing
Python modules and loading file-based resources faster than the official
importers in the Python standard library.terminfo database at runtime,
helping to ensure terminal functionality works as intended.pyoxy aims to expose all the value-added features implemented in the
pyembed Rust crate via the CLI so Python developers can harness these
features without having to use something more heavyweight, like PyOxidizer.
pythonThe pyoxy run-python command can be used to make the executable behave like
python would. e.g. pyoxy run-python -- -c "print('hello, world')".
In addition, if the pyoxy executable's file name begins with python
(e.g. python, python3, python3.9, python.exe), its custom
argument parsing is short-circuited and the executable will behave as if it
is actually python. This theoretically enables pyoxy to be used as
a drop-in replacement for python.
.. code-block::
$ mv pyoxy python $ ./python Python 3.9.5 (default, May 11 2021, 08:20:37) [GCC 10.3.0] on linux Type "help", "copyright", "credits" or "license" for more information.