Skip to main content

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

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.9.0-cp39.cp310.cp311.cp312.cp313.cp314-cp39.cp310.cp311.cp312.cp313.cp314-win_amd64.whl (69.8 MB view details)

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

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

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

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

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

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

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

depthai-3.9.0-cp39.cp310.cp311.cp312.cp313.cp314-cp39.cp310.cp311.cp312.cp313.cp314-macosx_11_0_arm64.whl (65.8 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.9.0-cp39.cp310.cp311.cp312.cp313.cp314-cp39.cp310.cp311.cp312.cp313.cp314-win_amd64.whl.

File metadata

File hashes

Hashes for depthai-3.9.0-cp39.cp310.cp311.cp312.cp313.cp314-cp39.cp310.cp311.cp312.cp313.cp314-win_amd64.whl
Algorithm Hash digest
SHA256 fd6e2e5143dde5fdbaa7cf97ceb0a674a09d9f44afaf7f256807fdd5eb111d79
MD5 090af60e961ba3be2be910b5e56242f5
BLAKE2b-256 7d7142bc1f84902efc294e76d4a18647d467fae7af6b7735ca0f9fe259c4d985

See more details on using hashes here.

File details

Details for the file depthai-3.9.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.9.0-cp39.cp310.cp311.cp312.cp313.cp314-cp39.cp310.cp311.cp312.cp313.cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c42e6e7d9c04867b6996b930ecedbcab1d34c14c6d9d246e045c09481ebdad2a
MD5 5a10bd427ec817837c348ab951b85958
BLAKE2b-256 6e6024573c453f41b0c876117fb33588723fddb5ce0b3b7ca900600b68770244

See more details on using hashes here.

File details

Details for the file depthai-3.9.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.9.0-cp39.cp310.cp311.cp312.cp313.cp314-cp39.cp310.cp311.cp312.cp313.cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5a388c28e2aefaada78d4c51fccd46ecad3340854d775c89db1e0a2c517ad953
MD5 1b54d35b7ec9b7557e0e639a4e7ef5e8
BLAKE2b-256 0e2c34048b2f37b8dd580eeacd3413193f575715f95cd6a1d05bb2541f708c5a

See more details on using hashes here.

File details

Details for the file depthai-3.9.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.9.0-cp39.cp310.cp311.cp312.cp313.cp314-cp39.cp310.cp311.cp312.cp313.cp314-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 80b1d255d2a2de1646d23d6d7c5dc9691b566664242eafa1bce7af6e24498b8b
MD5 707d7d4fb3d2dcd980a9dbff59dd88e8
BLAKE2b-256 33325becc328e6406c0f93fd5ca66139f0682c6609f63c9e955989156842b9b4

See more details on using hashes here.

File details

Details for the file depthai-3.9.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.9.0-cp39.cp310.cp311.cp312.cp313.cp314-cp39.cp310.cp311.cp312.cp313.cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9a53844013367d76a5152c985bd8f4a2b2a0f1eba2f4f192b969e0b1500b866e
MD5 925fae402e88ef060edd2c0b44225baf
BLAKE2b-256 baf663f3bfe444be5b0f78b591a2918f1dce237413aed01763c433a50817bc46

See more details on using hashes here.

Release history Release notifications | RSS feed

Supported by

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