Skip to main content

About

PyBindGen is (surprise!) a python bindings generator. The main features are:

  • Generates clean C or C++ code, nearly as readable as code written manually by a developer;

  • Generated code is self contained and does not require any external libraries or macros; after generating the python module only python header files are required, nothing else;

  • Does not require Boost.Python (no C++ template magic, also works in C);

  • The interface for code generation is a simple Python API, not some obscure interface definition language. Additionally PyBindGen can parse header files with gccxml, if gccxml and pygccxml are installed in the system (note: pygccxml has not been ported to Python 3 yet);

  • Can be easily extended with new type handlers;

  • Type handlers can allocate memory and register cleanup code to free;

  • Supports in, out, and inout parameters (e.g. with pointers or C++ references);

  • Supports multiple return values (e.g. due to out/inout parameters);

  • Supports wrapping of simple C++ classes;

  • Supports virtual methods in classes;

  • Supports reference counted classes and, to some extent, smart pointers;

  • Multiple inheritance;

  • Wrapping templated classes;

Notable features NOT implemented:

  • Converting exceptions from Python to C++ (only from C++ to Python is currently supported);

  • Callbacks.

Supported Python versions

See the documentation.

Installation

NOTE: if checking out pybindgen from bazaar, do not forget to see the file HACKING for additional instructions.

Before proceeding make sure the system requirements are met. PyBindGen requires:

  1. Python (http://www.python.org)

  2. Python development files (the python-dev package in Ubuntu/Debian, for example)

  3. A C/C++ Compilation tool-chain (apt-get install build-essential)

  4. (optional) GCCXML and PyGCCXML

You can install PyBindGen using either the setup.py or WAF. Note: to be able to run all tests, which involve code generation, and subsequent compilation, you need to use WAF.

Installation using setup.py:

python setup.py install

Installation using WAF

PyBindGen uses WAF as main build system. However, WAF does not have to be previously installed, as it is shipped with PyBindGen in a single waf script.

To install PyBindGen, issue the following commands (win32 users should omit the ./ prefix in commands):

  1. ./waf configure - optionally you may add the option –prefix /foo/bar. To select a non-defaul python version, use the PYTHON environment variable, e.g.:

    PYTHON=/usr/bin/python2.4 ./waf configure
  2. ./waf
    • possible options: -jN for parallel build, -p for progress bar

  3. ./waf check
    • optional step, runs the unit tests

  4. ./waf –examples
    • optional step, compiles the examples

  5. ./waf install
    • may require sudo

Windows specific notes

WAF concurrency bugs

WAF automatically detects the number of cores and tries to activate multiple build threads accordingly. However, this concurrency support appears to be buggy on Windows, therefore you should disable it with the -j1 option, if you have multiple CPUs:

waf check -j1

Compiler selection

Note that if you are compiling on win32, WAF will look for MSVC (MicroSoft Visual C) by default and give up on finding a C/C++ compiler if not found. If you do not have MSVC installed but instead have MinGW or CygWin GCC, you have to tell WAF to look for GCC in the configure stage:

waf configure –check-c-compiler=gcc –check-cxx-compiler=g++

Installation

On win32, waf install installs to a Temp folder by default. To have it install for a certain Python version, use the –prefix option to waf configure. For instance:

waf configure –prefix C:Python26 waf install

Installation failsafe

If by any chance you have trouble with WAF and are just looking to install PyBindGen, you should know that PyBindGen is entirely self-contained in the pybindgen directory. You can simply recursively copy the entire pybindgen folder into Python’s site-packages directory, and that’s it! PyBindGen is a pure Python package and does not actually require a C/C++ compiler; a C++ compiler is only used for code generation unit tests and compiling the example modules, and it is not needed to generate code.

Documentation

The following documentation is available:

  1. API docs (with introductory tutorial)

  2. Many simple examples in the examples directory

  3. Advanced examples in the unit tests (tests/)

  4. The source code!

https://travis-ci.org/gjcarneiro/pybindgen.svg?branch=master

Release files for PyBindGen 0.22.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for PyBindGen 0.22.1
File Size Uploaded
PyBindGen-0.22.1.tar.gz 449.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for PyBindGen 0.22.1
File Interpreter ABI Platform
PyBindGen-0.22.1-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 602.2 kB

Release files / PyBindGen-0.22.1.tar.gz

Download URL PyBindGen-0.22.1.tar.gz
Size 449.4 kB
Tags Source
SHA-256 checksum
How to use checksums
8c7f22391a49a84518f5a2ad06e3a5b1e839d10e34da7631519c8a28fcba3764
BLAKE2b-256 checksum
How to use checksums
e08ede441f26282eb869ac987c9a291af7e3773d93ffdb8e4add664b392ea439
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.9.7

Release files / PyBindGen-0.22.1-py2.py3-none-any.whl

Download URL PyBindGen-0.22.1-py2.py3-none-any.whl
Size 152.8 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
e9c2dad3c3e9da7811c271b5d6dcbb59ee59a2fe7877b4277556f95a9aea296e
BLAKE2b-256 checksum
How to use checksums
74f45fa8144cd33bb1f02b7e3ca9fdd98abe5a92885a793330e866c08a83db19
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.9.7

Release history Release notifications | RSS feed

This release

0.22.1 This release

2 release files

0.22.0

2 release files

0.20.1

2 release files

0.19.0

2 release files

0.18.0

2 release files

0.17.0

1 release file

0.16.0

0.15.0

0.14

0.13

0.12

0.11

0.10

0.9

0.7

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page