When building librealsense with Python bindings from source, I noticed that the C++ librealsense worked fine but pyrealsense2 couldn't be imported. After digging deeper, I found that the pyrealsense2* .so was being built but not installed. I checked the CMakeLists and there was indeed no install rule for the library (there is when legacy pybackend2 is used, but that wasn't the case for me).
Thus I went and added the install rules and it now works perfectly. PR here: https://github.com/IntelRealSense/librealsense/pull/13079
For background, I'm on an NVIDIA AGX Orin with Jetpack 6/L4T 36.2 so I have to compile from source with RSUSB backend to get it to work. This is the command I'm using for anyone in the same position:
cmake .. -DBUILD_PYTHON_BINDINGS=true -DBUILD_EXAMPLES=true -DCMAKE_BUILD_TYPE=Release -DFORCE_RSUSB_BACKEND=true -DBUILD_WITH_CUDA=true && make -j12 && sudo make install
Seems like a huge oversight!? I notice quite a few similar issues with people building from source for Jetson not finding pyrealsense2/needing to copy over the __init__.py (linked them in the PR), and the suggestion to "copy over the .so files" to the working directory (!?!)
Thanks so much @eufrizz for sharing your knowledge and creating a PR! I have added an Enhancement label to this issue to signify that it should be kept open whilst your PR is active. Thanks again!
When building librealsense with Python bindings from source, I noticed that the C++ librealsense worked fine but pyrealsense2 couldn't be imported. After digging deeper, I found that the pyrealsense2* .so was being built but not installed. I checked the CMakeLists and there was indeed no install rule for the library (there is when legacy pybackend2 is used, but that wasn't the case for me). Thus I went and added the install rules and it now works perfectly. PR here: https://github.com/IntelRealSense/librealsense/pull/13079
For background, I'm on an NVIDIA AGX Orin with Jetpack 6/L4T 36.2 so I have to compile from source with RSUSB backend to get it to work. This is the command I'm using for anyone in the same position:
Seems like a huge oversight!? I notice quite a few similar issues with people building from source for Jetson not finding
pyrealsense2
/needing to copy over the__init__.py
(linked them in the PR), and the suggestion to "copy over the .so files" to the working directory (!?!)make install output before
-- Up-to-date: /usr/local/lib/librealsense2.so.2.55.1 -- Up-to-date: /usr/local/lib/librealsense2.so.2.55 -- Up-to-date: /usr/local/lib/librealsense2.so -- Up-to-date: /usr/local/include/librealsense2 -- Up-to-date: /usr/local/include/librealsense2/rs.h -- Up-to-date: /usr/local/include/librealsense2/rsutil.h -- Up-to-date: /usr/local/include/librealsense2/rs_advanced_mode.hpp -- Up-to-date: /usr/local/include/librealsense2/h -- Up-to-date: /usr/local/include/librealsense2/h/rs_advanced_mode_command.h -- Up-to-date: /usr/local/include/librealsense2/h/rs_processing.h -- Up-to-date: /usr/local/include/librealsense2/h/rs_frame.h -- Up-to-date: /usr/local/include/librealsense2/h/rs_context.h -- Up-to-date: /usr/local/include/librealsense2/h/rs_sensor.h -- Up-to-date: /usr/local/include/librealsense2/h/rs_option.h -- Up-to-date: /usr/local/include/librealsense2/h/rs_config.h -- Up-to-date: /usr/local/include/librealsense2/h/rs_record_playback.h -- Up-to-date: /usr/local/include/librealsense2/h/rs_pipeline.h -- Up-to-date: /usr/local/include/librealsense2/h/rs_types.h -- Up-to-date: /usr/local/include/librealsense2/h/rs_internal.h -- Up-to-date: /usr/local/include/librealsense2/h/rs_device.h -- Up-to-date: /usr/local/include/librealsense2/rs.hpp -- Up-to-date: /usr/local/include/librealsense2/hpp -- Up-to-date: /usr/local/include/librealsense2/hpp/rs_serializable_device.hpp -- Up-to-date: /usr/local/include/librealsense2/hpp/rs_types.hpp -- Up-to-date: /usr/local/include/librealsense2/hpp/rs_record_playback.hpp -- Up-to-date: /usr/local/include/librealsense2/hpp/rs_context.hpp -- Up-to-date: /usr/local/include/librealsense2/hpp/rs_device.hpp -- Up-to-date: /usr/local/include/librealsense2/hpp/rs_frame.hpp -- Up-to-date: /usr/local/include/librealsense2/hpp/rs_internal.hpp -- Up-to-date: /usr/local/include/librealsense2/hpp/rs_processing.hpp -- Up-to-date: /usr/local/include/librealsense2/hpp/rs_export.hpp -- Up-to-date: /usr/local/include/librealsense2/hpp/rs_options.hpp -- Up-to-date: /usr/local/include/librealsense2/hpp/rs_sensor.hpp -- Up-to-date: /usr/local/include/librealsense2/hpp/rs_pipeline.hpp -- Up-to-date: /usr/local/include/librealsense2/rs_advanced_mode.h -- Up-to-date: /usr/local/lib/cmake/realsense2/realsense2Targets.cmake -- Up-to-date: /usr/local/lib/cmake/realsense2/realsense2Targets-release.cmake -- Up-to-date: /usr/local/lib/cmake/realsense2/realsense2Config.cmake -- Up-to-date: /usr/local/lib/cmake/realsense2/realsense2ConfigVersion.cmake -- Up-to-date: /usr/local/lib/pkgconfig/realsense2.pc -- Up-to-date: /usr/local/lib/librsutils.a -- Up-to-date: /usr/lib/python3/dist-packages/pyrealsense2/pyrsutils.cpython-310-aarch64-linux-gnu.so.2.55.1 -- Up-to-date: /usr/lib/python3/dist-packages/pyrealsense2/pyrsutils.cpython-310-aarch64-linux-gnu.so.2.55 -- Up-to-date: /usr/lib/python3/dist-packages/pyrealsense2/pyrsutils.cpython-310-aarch64-linux-gnu.so -- Up-to-date: /usr/local/lib/librealsense-file.a -- Up-to-date: /usr/local/lib/cmake/pyrealsense2/pyrealsense2Targets.cmake -- Up-to-date: /usr/local/lib/cmake/pyrealsense2/pyrealsense2Targets-release.cmake -- Up-to-date: /usr/local/lib/cmake/pyrealsense2/pyrealsense2Config.cmake -- Up-to-date: /usr/local/lib/cmake/pyrealsense2/pyrealsense2ConfigVersion.cmake -- Up-to-date: /usr/local/lib/librealsense2-gl.so.2.55.1 -- Up-to-date: /usr/local/lib/librealsense2-gl.so.2.55 -- Up-to-date: /usr/local/lib/librealsense2-gl.so -- Up-to-date: /usr/local/include/librealsense2-gl/rs_processing_gl.h -- Up-to-date: /usr/local/include/librealsense2-gl/rs_processing_gl.hpp -- Up-to-date: /usr/local/lib/cmake/realsense2-gl/realsense2-glTargets.cmake -- Up-to-date: /usr/local/lib/cmake/realsense2-gl/realsense2-glTargets-release.cmake -- Up-to-date: /usr/local/lib/cmake/realsense2-gl/realsense2-glConfig.cmake -- Up-to-date: /usr/local/lib/cmake/realsense2-gl/realsense2-glConfigVersion.cmake -- Up-to-date: /usr/local/lib/pkgconfig/realsense2-gl.pc -- Up-to-date: /usr/local/bin/rs-hello-realsense -- Up-to-date: /usr/local/bin/rs-software-device -- Up-to-date: /usr/local/bin/rs-capture -- Up-to-date: /usr/local/bin/rs-callback -- Up-to-date: /usr/local/bin/rs-save-to-disk -- Up-to-date: /usr/local/bin/rs-multicam -- Up-to-date: /usr/local/bin/rs-pointcloud -- Up-to-date: /usr/local/bin/rs-align -- Up-to-date: /usr/local/bin/rs-align-gl -- Up-to-date: /usr/local/bin/rs-align-advanced -- Up-to-date: /usr/local/bin/rs-sensor-control -- Up-to-date: /usr/local/bin/rs-measure -- Up-to-date: /usr/local/bin/rs-depth -- Up-to-date: /usr/local/bin/rs-color -- Up-to-date: /usr/local/bin/rs-distance -- Up-to-date: /usr/local/bin/rs-post-processing -- Up-to-date: /usr/local/bin/rs-record-playback -- Up-to-date: /usr/local/bin/rs-motion -- Up-to-date: /usr/local/bin/rs-gl -- Up-to-date: /usr/local/bin/rs-hdr -- Up-to-date: /usr/local/bin/rs-convert -- Up-to-date: /usr/local/bin/rs-enumerate-devices -- Up-to-date: /usr/local/bin/rs-fw-logger -- Up-to-date: /usr/local/bin/rs-terminal -- Up-to-date: /usr/local/bin/rs-record -- Up-to-date: /usr/local/bin/rs-fw-update -- Up-to-date: /usr/local/bin/rs-embed -- Up-to-date: /usr/local/bin/rs-data-collect -- Installing: /usr/local/bin/realsense-viewer -- Set runtime path of "/usr/local/bin/realsense-viewer" to "" -- Up-to-date: /home/eugene/Documents/librealsense2/presets -- Up-to-date: /home/eugene/Documents/librealsense2/presets/sample.preset -- Installing: /usr/local/bin/rs-depth-quality -- Set runtime path of "/usr/local/bin/rs-depth-quality" to "" -- Up-to-date: /usr/local/bin/rs-rosbag-inspector -- Up-to-date: /usr/local/bin/rs-benchmark -- Up-to-date: /usr/local/lib/libfw.a
make install output after
-- Up-to-date: /usr/local/lib/librealsense2.so.2.55.1 -- Up-to-date: /usr/local/lib/librealsense2.so.2.55 -- Up-to-date: /usr/local/lib/librealsense2.so -- Up-to-date: /usr/local/include/librealsense2 -- Up-to-date: /usr/local/include/librealsense2/rs.h -- Up-to-date: /usr/local/include/librealsense2/rsutil.h -- Up-to-date: /usr/local/include/librealsense2/rs_advanced_mode.hpp -- Up-to-date: /usr/local/include/librealsense2/h -- Up-to-date: /usr/local/include/librealsense2/h/rs_advanced_mode_command.h -- Up-to-date: /usr/local/include/librealsense2/h/rs_processing.h -- Up-to-date: /usr/local/include/librealsense2/h/rs_frame.h -- Up-to-date: /usr/local/include/librealsense2/h/rs_context.h -- Up-to-date: /usr/local/include/librealsense2/h/rs_sensor.h -- Up-to-date: /usr/local/include/librealsense2/h/rs_option.h -- Up-to-date: /usr/local/include/librealsense2/h/rs_config.h -- Up-to-date: /usr/local/include/librealsense2/h/rs_record_playback.h -- Up-to-date: /usr/local/include/librealsense2/h/rs_pipeline.h -- Up-to-date: /usr/local/include/librealsense2/h/rs_types.h -- Up-to-date: /usr/local/include/librealsense2/h/rs_internal.h -- Up-to-date: /usr/local/include/librealsense2/h/rs_device.h -- Up-to-date: /usr/local/include/librealsense2/rs.hpp -- Up-to-date: /usr/local/include/librealsense2/hpp -- Up-to-date: /usr/local/include/librealsense2/hpp/rs_serializable_device.hpp -- Up-to-date: /usr/local/include/librealsense2/hpp/rs_types.hpp -- Up-to-date: /usr/local/include/librealsense2/hpp/rs_record_playback.hpp -- Up-to-date: /usr/local/include/librealsense2/hpp/rs_context.hpp -- Up-to-date: /usr/local/include/librealsense2/hpp/rs_device.hpp -- Up-to-date: /usr/local/include/librealsense2/hpp/rs_frame.hpp -- Up-to-date: /usr/local/include/librealsense2/hpp/rs_internal.hpp -- Up-to-date: /usr/local/include/librealsense2/hpp/rs_processing.hpp -- Up-to-date: /usr/local/include/librealsense2/hpp/rs_export.hpp -- Up-to-date: /usr/local/include/librealsense2/hpp/rs_options.hpp -- Up-to-date: /usr/local/include/librealsense2/hpp/rs_sensor.hpp -- Up-to-date: /usr/local/include/librealsense2/hpp/rs_pipeline.hpp -- Up-to-date: /usr/local/include/librealsense2/rs_advanced_mode.h -- Up-to-date: /usr/local/lib/cmake/realsense2/realsense2Targets.cmake -- Up-to-date: /usr/local/lib/cmake/realsense2/realsense2Targets-relwithdebinfo.cmake -- Up-to-date: /usr/local/lib/cmake/realsense2/realsense2Config.cmake -- Up-to-date: /usr/local/lib/cmake/realsense2/realsense2ConfigVersion.cmake -- Up-to-date: /usr/local/lib/pkgconfig/realsense2.pc -- Up-to-date: /usr/local/lib/librsutils.a -- Up-to-date: /usr/lib/python3/dist-packages/pyrealsense2/pyrsutils.cpython-310-aarch64-linux-gnu.so.2.55.1 -- Up-to-date: /usr/lib/python3/dist-packages/pyrealsense2/pyrsutils.cpython-310-aarch64-linux-gnu.so.2.55 -- Up-to-date: /usr/lib/python3/dist-packages/pyrealsense2/pyrsutils.cpython-310-aarch64-linux-gnu.so -- Up-to-date: /usr/local/lib/librealsense-file.a -- Up-to-date: /usr/local/lib/cmake/pyrealsense2/pyrealsense2Targets.cmake -- Up-to-date: /usr/local/lib/cmake/pyrealsense2/pyrealsense2Targets-relwithdebinfo.cmake -- Up-to-date: /usr/local/lib/cmake/pyrealsense2/pyrealsense2Config.cmake -- Up-to-date: /usr/local/lib/cmake/pyrealsense2/pyrealsense2ConfigVersion.cmake -- Up-to-date: /usr/lib/python3/dist-packages/pyrealsense2/pyrealsense2.cpython-310-aarch64-linux-gnu.so.2.55.1 -- Up-to-date: /usr/lib/python3/dist-packages/pyrealsense2/pyrealsense2.cpython-310-aarch64-linux-gnu.so.2.55 -- Up-to-date: /usr/lib/python3/dist-packages/pyrealsense2/pyrealsense2.cpython-310-aarch64-linux-gnu.so -- Installing: /usr/lib/python3/dist-packages/pyrealsense2/__init__.py -- Up-to-date: /usr/local/lib/librealsense2-gl.so.2.55.1 -- Up-to-date: /usr/local/lib/librealsense2-gl.so.2.55 -- Up-to-date: /usr/local/lib/librealsense2-gl.so -- Up-to-date: /usr/local/include/librealsense2-gl/rs_processing_gl.h -- Up-to-date: /usr/local/include/librealsense2-gl/rs_processing_gl.hpp -- Up-to-date: /usr/local/lib/cmake/realsense2-gl/realsense2-glTargets.cmake -- Up-to-date: /usr/local/lib/cmake/realsense2-gl/realsense2-glTargets-relwithdebinfo.cmake -- Up-to-date: /usr/local/lib/cmake/realsense2-gl/realsense2-glConfig.cmake -- Up-to-date: /usr/local/lib/cmake/realsense2-gl/realsense2-glConfigVersion.cmake -- Up-to-date: /usr/local/lib/pkgconfig/realsense2-gl.pc -- Up-to-date: /usr/local/bin/rs-hello-realsense -- Up-to-date: /usr/local/bin/rs-software-device -- Up-to-date: /usr/local/bin/rs-capture -- Up-to-date: /usr/local/bin/rs-callback -- Up-to-date: /usr/local/bin/rs-save-to-disk -- Up-to-date: /usr/local/bin/rs-multicam -- Up-to-date: /usr/local/bin/rs-pointcloud -- Up-to-date: /usr/local/bin/rs-align -- Up-to-date: /usr/local/bin/rs-align-gl -- Up-to-date: /usr/local/bin/rs-align-advanced -- Up-to-date: /usr/local/bin/rs-sensor-control -- Up-to-date: /usr/local/bin/rs-measure -- Up-to-date: /usr/local/bin/rs-depth -- Up-to-date: /usr/local/bin/rs-color -- Up-to-date: /usr/local/bin/rs-distance -- Up-to-date: /usr/local/bin/rs-post-processing -- Up-to-date: /usr/local/bin/rs-record-playback -- Up-to-date: /usr/local/bin/rs-motion -- Up-to-date: /usr/local/bin/rs-gl -- Up-to-date: /usr/local/bin/rs-hdr -- Up-to-date: /usr/local/bin/rs-convert -- Up-to-date: /usr/local/bin/rs-enumerate-devices -- Up-to-date: /usr/local/bin/rs-fw-logger -- Up-to-date: /usr/local/bin/rs-terminal -- Up-to-date: /usr/local/bin/rs-record -- Up-to-date: /usr/local/bin/rs-fw-update -- Up-to-date: /usr/local/bin/rs-embed -- Up-to-date: /usr/local/bin/rs-data-collect -- Installing: /usr/local/bin/realsense-viewer -- Set runtime path of "/usr/local/bin/realsense-viewer" to "" -- Up-to-date: /home/eugene/Documents/librealsense2/presets -- Up-to-date: /home/eugene/Documents/librealsense2/presets/sample.preset -- Installing: /usr/local/bin/rs-depth-quality -- Set runtime path of "/usr/local/bin/rs-depth-quality" to "" -- Up-to-date: /usr/local/bin/rs-rosbag-inspector -- Up-to-date: /usr/local/bin/rs-benchmark -- Up-to-date: /usr/local/lib/libfw.a