# pocketpy: python interpreter in 1 file
**English |** [**简体中文**](README_zh.md) pkpy is a lightweight(~10000 LOC) Python interpreter for game scripting, built on C++17 with STL. It aims to be an alternative to lua for game scripting, with elegant syntax, powerful features and competitive performance. pkpy is extremely easy to embed via a single header file `pocketpy.h`, without external dependencies. Please see https://pocketpy.dev for details or try [Live Demo](https://pocketpy.dev/static/web/). ## Quick start Download the `pocketpy.h` on our [GitHub Release](https://github.com/blueloveTH/pocketpy/releases) page. And `#include` it in your project. You can also use cmake to build it from source. See CMakeLists.txt for details. These variables can be set to control the build process: + `PK_BUILD_EXE` - Build the executable file + `PK_BUILD_STATIC_LIB` - Build the static library + `PK_BUILD_SHARED_LIB` - Build the shared library If you are working with [Unity Engine](https://unity.com/), you can download our plugin [PocketPython](https://assetstore.unity.com/packages/tools/visual-scripting/pocketpy-241120) on the Asset Store. ### Compile flags To compile it with your project, these flags must be set: + `--std=c++17` flag must be set + Exception must be enabled + RTTI is not required !!! For maximum performance, we recommend to use `clang++` with `-O2` flag. !!! ### Example ```cpp #include "pocketpy.h" using namespace pkpy; int main(){ // Create a virtual machine VM* vm = new VM(); // Hello world! vm->exec("print('Hello world!')", "main.py", EXEC_MODE); // Create a list vm->exec("a = [1, 2, 3]", "main.py", EXEC_MODE); // Eval the sum of the list PyObject* result = vm->exec("sum(a)", "