https://github.com/mkashirin/pyzig
Create Python native extensions using Zig and Python C API!
https://github.com/mkashirin/pyzig
Last synced: 2 months ago
JSON representation
Create Python native extensions using Zig and Python C API!
- Host: GitHub
- URL: https://github.com/mkashirin/pyzig
- Owner: mkashirin
- Created: 2024-12-05T13:32:06.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2025-04-18T08:03:27.000Z (3 months ago)
- Last Synced: 2025-05-07T14:07:57.814Z (2 months ago)
- Language: Zig
- Homepage:
- Size: 43.9 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
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
bash "build_python_library.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.