Python Bindings¶
Some functionality of B-Human is exported to Python using pybind11 in a package called pybh
.
Installation (only for B-Human members)¶
The GitLab CI builds and uploads the package when triggered manually (the version number in Make/Python/setup.py
should be incremented before).
There are binary wheels for x86_64-Linux with CPython 3.8-3.12 and a source distribution for all other platforms.
pip and other Python package managers automatically choose the right thing when being instructed to install pybh
.
Requirements¶
- A GitLab access token (with
read_api
permissions) is required. This can be either a personal token or a group token (the latter can not be created with regular permissions). - If the Python environment is not CPython 3.8-3.12 on x86_64-Linux, build tools (i.e. a compiler etc.) must be available. On Linux, at least clang, ccache and mold must be available (the latter can be symlinked to ld if mold is not available).
Procedure¶
- While the Python environment in which you want to install the package is active, run:
pip install pybh --index-url https://__token__:<the-access-token>@gitlab.informatik.uni-bremen.de/api/v4/projects/7408/packages/pypi/simple
Of course, the package index can be used with other Python package managers, too. The details of that are beyond the scope of this page.
Local Build¶
There are different methods to build the package without downloading anything from the GitLab package registry, among them:
- Creating a distribution locally using
build
(and installing it). This is best done by looking at/.gitlab-ci.yml
in the B-Human repository, but does not work on Windows because it relies on symbolic links. - Building the targets directly in the CMake project.
This requires Python development files (libraries and headers) to be found during project generation.
Then, the targets
Python*
can be build like any other target. - Installing the source directory via pip. This is described below.
Requirements¶
- Linux or macOS. Windows does not work because symbolic links are required.
- A development version of Python (with libraries and headers), e.g. an installed package
python3-dev
on Ubuntu. - The usual platform-dependent requirements as given in Initial Setup
- pip >= 21.3 (or
--use-feature=in-tree-build
must be used)
Procedure¶
- Ensure that
Make/Python/build
andMake/Python/pybh.egg-info
do not exist (these may be left from previous builds). - While the Python environment in which you want to install the package is active, run:
pip install <path-to-B-Human>/Make/Python
API¶
See the B-Human Python documentation.