An open API service indexing awesome lists of open source software.

https://github.com/mkashirin/pyzig

Create Python native extensions using Zig and Python C API!
https://github.com/mkashirin/pyzig

c-python-extensions python python-c-api zig

Last synced: about 2 months ago
JSON representation

Create Python native extensions using Zig and Python C API!

Awesome Lists containing this project

README

          

PyZig


Create Python native extensions using Zig and Python C API!

## Usage

First, create and activate a virtual environment and install dev dependencies
(using UV and bash):
```sh
uv venv
source .venv/bin/activate
uv pip install -r pyproject.toml --extra dev
```

### Manual Build and Installation

Then build a shared library file by executing:
```sh
zig build
```
The Python package can be now built and installed like so (using UV):
```sh
uv build
uv pip install .
```

### Automated Build and Installation

Use `ZIG_INSTALLED` environment variable to specify what type of Zig compiler
to use (unset is for Python Zig module, 1 is for system-wide installed
binary). Then create and activate a virtual environment (example above). After
that, run the build shell script:
```sh
source install.sh
```

### Testing

Once the installation is complete, the test can be run as follows:
```sh
python tests/test_zigmodule.py
```

Have fun!

## TODOs

- Generate stubs automatically
- Build some Zig API for more convinient interaction with Python C API.