# Deploy Bytecodes

You can deploy your pocketpy program as .pyc files, which are compiled bytecodes with necessary metadata. This slightly improves the loading speed of your program.

It also makes your users unable to get your source code directly, unless they do expensive reverse engineering.

To compile a .py file into a .pyc bytecode file, you need the command-line executable main, which can be simply built by running python cmake_build.py in the repository root.

# Example

Once you have main executable, you can run the following command to compile input_file.py:

./main --compile input_file.py output_file.pyc

Alternatively, you can invoke the compileall.py script in the repository root. It compiles all .py files in the specified directory into .pyc files.

python compileall.py ./main input_path output_path

# Running .pyc files

The command-line executable main can run .pyc files directly:

./main output_file.pyc

If you are using C-APIs, you can use the py_execo() function.

/// Run a compiled code object.
PK_API bool py_execo(const void* data, int size, const char* filename, py_Ref module) PY_RAISE PY_RETURN;

# Trackback Support

Since .pyc files do not contain raw sources, trackbacks will show line numbers but not the actual source code lines.