Skip to main content

DepthAI Python Library

Project description

DepthAI Python Library

License: MIT Python Wheel CI

Python bindings for C++ depthai-core library

Documentation

Documentation is available over at Luxonis DepthAI API

Installation

Prebuilt wheels are available in Luxonis repository Make sure pip is upgraded

python3 -m pip install -U pip
python3 -m pip install --extra-index-url https://artifacts.luxonis.com/artifactory/luxonis-python-snapshot-local/ depthai

Building from source

Dependencies

  • cmake >= 3.4
  • C++14 compiler (clang, gcc, msvc, ...)
  • Python3

Along these, dependencies of depthai-core are also required See: depthai-core dependencies

Building

The first time you build, the repository submodules need be initialized:

git submodule update --init --recursive

# Tip: You can ask Git to do that automatically:
git config submodule.recurse true

Later submodules also need to be updated.

Local build with pip

To build and install using pip:

cd dephai-core/bindings/python
python3 -m pip install .

Add parameter -v to see the output of the building process.

Wheel with pip

To build a wheel, execute the following

cd depthai-core/bindings/python
python3 -m pip wheel . -w wheelhouse --no-deps

Shared library

ℹ️ This is the recommended way when you are iterating as installing with pip is generally very slow for iteration.

To build a shared library from source perform the following:

cd depthai-core
cmake -H. -Bbuild -DDEPTHAI_BUILD_PYTHON=ON
cmake --build build

ℹ️ To speed up build times, use cmake --build build --parallel [num CPU cores] (CMake >= 3.12). For older versions use: Linux/macOS: cmake --build build -- -j[num CPU cores], MSVC: cmake --build build -- /MP[num CPU cores]

To specify custom Python executable to build for, use cmake -H. -Bbuild -D PYTHON_EXECUTABLE=/full/path/to/python.

⚠️ Important: To run python code directly with the shared library, you need to set the PYTHONPATH environment variable to the directory containing the shared library. For example, on Linux:

export PYTHONPATH=$(pwd)/build/bindings/python
# Confirm that the right shared library is loaded
python3 -c "import depthai as dai; print(dai.__file__)"
# It should print the path to the shared library, something like /path/to/depthai-core/build/bindings/python/depthai.cpython-38-x86_64-linux-gnu.so

ℹ️ When using an IDE like VSCode, if you set the PYTHONPATH before opening the IDE, it will correctly resolve autocompletion without needing to do pip install ..

Common issues

  • Many build fails due to missing dependencies. This also happens when submodules are missing or outdated (git submodule update --recursive).
  • If libraries and headers are not in standard places, or not on the search paths, CMake reports it cannot find what it needs (e.g. libusb). CMake can be hinted at where to look, for exmpale: CMAKE_LIBRARY_PATH=/opt/local/lib CMAKE_INCLUDE_PATH=/opt/local/include pip install .
  • Some distribution installers may not get the desired library. For example, an install on a RaspberryPi failed, missing libusb, as the default installation with APT led to v0.1.3 at the time, whereas the library here required v1.0.

Running tests

To run the tests build the library with the following options

git submodule update --init --recursive
cmake -H. -Bbuild -D DEPTHAI_PYTHON_ENABLE_TESTS=ON -D DEPTHAI_PYTHON_ENABLE_EXAMPLES=ON -D DEPTHAI_PYTHON_TEST_EXAMPLES=ON
cmake --build build

Then navigate to build folder and run ctest

cd build
ctest

To test a specific example/test with a custom timeout (in seconds) use following:

TEST_TIMEOUT=0 ctest -R "01_rgb_preview" --verbose

If TEST_TIMEOUT=0, the test will run until stopped or it ends.

Tested platforms

  • Windows 10, Windows 11
  • Ubuntu 18.04, 20.04, 22.04;
  • Raspbian 10;
  • macOS 10.14.6, 10.15.4;

Building documentation

  • Using Docker (with Docker Compose)

    cd docs
    sudo docker-compose build
    sudo docker-compose up
    

    ℹ️ You can leave out the sudo if you have added your user to the docker group (or are using rootless docker). Then open http://localhost:8000.

    This docker container will watch changes in the docs/source directory and rebuild the docs automatically

  • Linux

    First, please install the required dependencies

    Then run the following commands to build the docs website

    python3 -m pip install -U pip
    python3 -m pip install -r docs/requirements.txt
    cmake -H. -Bbuild -D DEPTHAI_BUILD_DOCS=ON -D DEPTHAI_PYTHON_BUILD_DOCS=ON
    cmake --build build --target sphinx
    python3 -m http.server --bind 0.0.0.0 8000 --directory build/docs/sphinx
    

    Then open http://localhost:8000.

    This will build documentation based on current sources, so if some new changes will be made, run this command in a new terminal window to update the website source

    cmake --build build --target sphinx
    

    Then refresh your page - it should load the updated website that was just built

Troubleshooting

Relocation link error

Build failure on Ubuntu 18.04 ("relocation ..." link error) with gcc 7.4.0 (default) - issue #3

  • the solution was to upgrade gcc to version 8:

    sudo apt install g++-8
    sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 70
    sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 70
    

Hunter

Hunter is a CMake-only dependency manager for C/C++ projects.

If you are stuck with error message which mentions external libraries (subdirectory of .hunter) like the following:

/usr/bin/ld: /home/[user]/.hunter/_Base/062a19a/ccfed35/a84a713/Install/lib/liblzma.a(stream_flags_decoder.c.o): warning: relocation against `lzma_footer_magic' in read-only section `.text'

Try erasing the Hunter cache folder.

Linux/MacOS:

rm -r ~/.hunter

Windows:

del C:/.hunter

or

del C:/[user]/.hunter

LTO - link time optimization

If following message appears:

lto1: internal compiler error: in add_symbol_to_partition_1, at lto/lto-partition.c:152
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-10/README.Bugs> for instructions.
lto-wrapper: fatal error: /usr/bin/c++ returned 1 exit status
compilation terminated.
/usr/bin/ld: error: lto-wrapper failed
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/depthai.dir/build.make:227: depthai.cpython-38-x86_64-linux-gnu.so] Error 1
make[1]: *** [CMakeFiles/Makefile2:98: CMakeFiles/depthai.dir/all] Error 2
make: *** [Makefile:130: all] Error 2

One fix is to update linker: (In case you are on Ubuntu 20.04: /usr/bin/ld --version: 2.30)

# Add to the end of /etc/apt/sources.list:

echo "deb http://ro.archive.ubuntu.com/ubuntu groovy main" >> /etc/apt/sources.list

# Replace ro with your countries local cache server (check the content of the file to find out which is)
# Not mandatory, but faster

sudo apt update
sudo apt install binutils

# Should upgrade to 2.35.1
# Check version:
/usr/bin/ld --version
# Output should be: GNU ld (GNU Binutils for Ubuntu) 2.35.1
# Revert /etc/apt/sources.list to previous state (comment out line) to prevent updating other packages.
sudo apt update

Another option is to use clang compiler:

sudo apt install clang-10
mkdir build && cd build
CC=clang-10 CXX=clang++-10 cmake ..
cmake --build . --parallel

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

depthai-3.8.0-cp39.cp310.cp311.cp312.cp313.cp314-cp39.cp310.cp311.cp312.cp313.cp314-win_amd64.whl (67.0 MB view details)

Uploaded CPython 3.10CPython 3.11CPython 3.12CPython 3.13CPython 3.14CPython 3.9Windows x86-64

depthai-3.8.0-cp39.cp310.cp311.cp312.cp313.cp314-cp39.cp310.cp311.cp312.cp313.cp314-manylinux_2_28_x86_64.whl (82.1 MB view details)

Uploaded CPython 3.10CPython 3.11CPython 3.12CPython 3.13CPython 3.14CPython 3.9manylinux: glibc 2.28+ x86-64

depthai-3.8.0-cp39.cp310.cp311.cp312.cp313.cp314-cp39.cp310.cp311.cp312.cp313.cp314-manylinux_2_28_aarch64.whl (76.9 MB view details)

Uploaded CPython 3.10CPython 3.11CPython 3.12CPython 3.13CPython 3.14CPython 3.9manylinux: glibc 2.28+ ARM64

depthai-3.8.0-cp39.cp310.cp311.cp312.cp313.cp314-cp39.cp310.cp311.cp312.cp313.cp314-macosx_11_0_x86_64.whl (66.2 MB view details)

Uploaded CPython 3.10CPython 3.11CPython 3.12CPython 3.13CPython 3.14CPython 3.9macOS 11.0+ x86-64

depthai-3.8.0-cp39.cp310.cp311.cp312.cp313.cp314-cp39.cp310.cp311.cp312.cp313.cp314-macosx_11_0_arm64.whl (62.7 MB view details)

Uploaded CPython 3.10CPython 3.11CPython 3.12CPython 3.13CPython 3.14CPython 3.9macOS 11.0+ ARM64

File details

Details for the file depthai-3.8.0-cp39.cp310.cp311.cp312.cp313.cp314-cp39.cp310.cp311.cp312.cp313.cp314-win_amd64.whl.

File metadata

File hashes

Hashes for depthai-3.8.0-cp39.cp310.cp311.cp312.cp313.cp314-cp39.cp310.cp311.cp312.cp313.cp314-win_amd64.whl
Algorithm Hash digest
SHA256 1151bc53cf3e8a4ade85068ebef335b222c6ad1ca5ad668929d2e63bf54ebd75
MD5 91b02f65bf90def6a999c7935a77eb96
BLAKE2b-256 a588645a89bc5d2daa0146e71ecd700635e7ef0c0d6218d0b74cd58eeea73d49

See more details on using hashes here.

File details

Details for the file depthai-3.8.0-cp39.cp310.cp311.cp312.cp313.cp314-cp39.cp310.cp311.cp312.cp313.cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for depthai-3.8.0-cp39.cp310.cp311.cp312.cp313.cp314-cp39.cp310.cp311.cp312.cp313.cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6d7aef6f80222f71394334babbdd7404bcb214717237c9b4c8b968fc5ea0968d
MD5 40b87af6f1d40d4adb930846de1972f7
BLAKE2b-256 d65ff3de4933b80ac6902152d621e56c5b4d7f1cde78f68713d4ff9e24d7de24

See more details on using hashes here.

File details

Details for the file depthai-3.8.0-cp39.cp310.cp311.cp312.cp313.cp314-cp39.cp310.cp311.cp312.cp313.cp314-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for depthai-3.8.0-cp39.cp310.cp311.cp312.cp313.cp314-cp39.cp310.cp311.cp312.cp313.cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 68b722c0eefdfc2e7b148c7520b67bb9f839ce394cb6b5d8a5a20acb5050d0ee
MD5 e2e243c72d44d328dd1162e4ab3ee368
BLAKE2b-256 cc60e26cda3f7f589575eb84d053a64028e516a60a632b728094daef43b52310

See more details on using hashes here.

File details

Details for the file depthai-3.8.0-cp39.cp310.cp311.cp312.cp313.cp314-cp39.cp310.cp311.cp312.cp313.cp314-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for depthai-3.8.0-cp39.cp310.cp311.cp312.cp313.cp314-cp39.cp310.cp311.cp312.cp313.cp314-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 84e7c5ab8d6076f724531375d7d281e826f7ac015446bf30fafcf4026f9e136b
MD5 5198adf382d390f11a56951db017e3f3
BLAKE2b-256 14aface11468e674bc9519fb048db4a15872fea56570a584088bc4f40755136c

See more details on using hashes here.

File details

Details for the file depthai-3.8.0-cp39.cp310.cp311.cp312.cp313.cp314-cp39.cp310.cp311.cp312.cp313.cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for depthai-3.8.0-cp39.cp310.cp311.cp312.cp313.cp314-cp39.cp310.cp311.cp312.cp313.cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a26a2274eef34edc2a04c50360f43ad55f2ee86f3752c008898b86df1262efa2
MD5 6a85cd4479f21471320afdaaeca7e649
BLAKE2b-256 c79c5c1bf6e08d80c5ecca1f67a4bd1bfa0fe1b63055d79c762b266ed38f5f03

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page