使用 Balena 安装 librealsense 的问题 make install 后找不到文件?

问题描述

我一直在尝试使用 Balena 在我的 RaspBerry Pi4 上设置 librealsense。我的 docker 文件看起来像:

FROM balenalib/raspBerrypi3-ubuntu:xenial-build
RUN sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y
RUN sudo apt-get install -y python3 \
    python3-dev \
    python3-pip \
    python3-setuptools 

RUN sudo apt-get install -y git libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev cmake libglfw3-dev build-essential 
RUN git clone https://github.com/IntelRealSense/librealsense.git
RUN cd librealsense/ && ./scripts/setup_udev_rules.sh
RUN mkdir build &&\
    cd build &&\
    cmake /librealsense/ -DBUILD_PYTHON_BINDINGS=true -DBUILD_EXAMPLES=true -DBUILD_GRAPHICAL_EXAMPLES=false -DCMAKE_BUILD_TYPE=Release &&\
    make all -j4 &&\
    sudo make all 

copY librealsense/build/ /usr/src/app/

#switch on systemd init system in container
ENV INITSYstem on

workdir /usr/src/app
copY ./app/ /usr/src/app/


#Run our binary on container startup
CMD ["python3","/usr/src/app/test_server.py"]

我的 test_server.py 看起来像:

import sys,os
print("TEST")
rootdir = '/usr/src/app'
for f in os.listdir(rootdir):
    print(f)
print(sys.version)
try:
    user_paths = os.environ['PYTHONPATH'].split(os.pathsep)
except KeyError:
    user_paths = []
print(user_paths)
print(sys.path)
sys.path.append('/usr/src/app/')
import pyrealsense2 as rs

我无法导入 pyrealsense 或复制构建的 .so 文件以放入我的 python 应用程序文件夹。我在创建 docker 映像时收到“librealsense/build/python 不存在”错误。我的 librealsense 安装缺少什么?

解决方法

我认为你的问题是

COPY librealsense/build/ /usr/src/app/

这将尝试从您的构建上下文(又名主机)中复制“librealsense/build”。您需要将 'RUN' 与 'cp' 一起使用,例如

RUN cp librealsense/build/ /usr/src/app/

或在单个 RUN 命令中:

RUN mkdir build &&\
    cd build &&\
    cmake /librealsense/ -DBUILD_PYTHON_BINDINGS=true -DBUILD_EXAMPLES=true -DBUILD_GRAPHICAL_EXAMPLES=false -DCMAKE_BUILD_TYPE=Release &&\
    make all -j4 &&\
    sudo make all  &&\
    cp librealsense/build/ /usr/src/app/