Python Support¶
Python support in Djinni is experimental, but ready to try out. It can generate code for bridging C++ with Python 3.
For more information, you can check out the talk from CppCon 2015. Slides and video are avilable online.
Pre-requisites¶
Djinni generates code which should work with Python 3. Python support has only been tested on macOS with the clang compiler. ~~It's been designed to work on any platform, and the known issues are in the build scripts rather than the generated code itself.~~ (We're now using CMake to build all bindings but it still requires testing in platforms other than macOS.)
The Python support generated by Djinni makes use of a few non-default Python extensions, as does the test suite. You can install them as follows:
sudo pip3 install cffi
sudo pip3 install future
sudo pip3 install pytest
Test Suite¶
Because of the known limitations described below, the Python test suite does not use all of the same
inputs as the other languages. As a result, you'll see a separate pycpp
directory in
generated-src. This contains output of the standard C++ generator, but for the specific input files
used by the Python test suite.
Known limitations¶
- Proxy caching is not yet implemented. In addition to some inefficiency, this means that the same object passed across the language boundary twice is not guaranteed to appear as a single object on the other side.
- The support library code makes direct reference to
types rather than respecting the command-line choice of a different optional library.
Python support on Windows not complete yet¶
If you want help development of that feature, please download the current generator for Windows and place it in the root folder.
Generate the cmake project:
cmake -S . -B build/py -DDJINNI_WITH_PYTHON=ON -DDJINNI_EXECUTABLE="$(((Get-Location).Path) -replace "\\","/")/djinni.bat" -G "Visual Studio 16 2019"
Run the build
cmake --build build/py
Explore the error. Help will be welcome!