Docker构建镜像时Python脚本执行报错,如何解决?
Docker构建镜像报错(ERROR: failed to solve: process "/bin/sh -c python3...")的解决方法
执行docker build -t my_img .时出现报错:ERROR: failed to solve: process "/bin/sh -c python3...",对应的Dockerfile内容如下:
FROM nvidia/cuda:11.7.1-cudnn8-runtime-ubuntu20.04 ENV DEBIAN_FRONTEND noninteractive # setup timezone RUN echo 'Etc/UTC' > /etc/timezone && \ ln -s /usr/share/zoneinfo/Etc/UTC /etc/localtime && \ apt-get update && \ apt-get install -q -y --no-install-recommends tzdata && \ rm -rf /var/lib/apt/lists/* # Install necessary dependencies RUN apt-get update && apt-get install -q -y --reinstall --no-install-recommends \ curl \ git \ lsb-release \ build-essential \ software-properties-common \ cmake \ python3-pip python3-dev python-is-python3 \ zlib1g-dev \ && rm -rf /var/lib/apt/lists/* # setup environment ENV LANG C.UTF-8 ENV LC_ALL C.UTF-8 ## BlenderProc WORKDIR /root RUN git clone https://github.com/DLR-RM/BlenderProc.git WORKDIR /root/BlenderProc RUN pip install -e . ## Download textures RUN echo 'import blenderproc as bproc' | cat - /root/BlenderProc/blenderproc/scripts/download_cc_textures.py > temp && mv temp /root/BlenderProc/blenderproc/scripts/download_cc_textures.py RUN python3 /root/BlenderProc/blenderproc/scripts/download_cc_textures.py ENV NVIDIA_VISIBLE_DEVICES all ENV NVIDIA_DRIVER_CAPABILITIES compute,utility
问题分析及修复步骤
1. 补充Blender运行环境(核心问题)
BlenderProc依赖Blender的Python环境,原Dockerfile未安装Blender,直接执行import blenderproc会报错。需添加Blender安装步骤:
在# setup environment之后、## BlenderProc之前插入以下代码:
# Install Blender(适配BlenderProc的3.3.1版本) ENV BLENDER_VERSION="3.3.1" RUN apt-get update && apt-get install -y --no-install-recommends \ libgl1-mesa-glx \ libxi6 \ libxrender1 \ libxkbcommon-x11-0 \ && rm -rf /var/lib/apt/lists/* RUN curl -L https://download.blender.org/release/Blender${BLENDER_VERSION%.*}/blender-${BLENDER_VERSION}-linux-x64.tar.xz -o blender.tar.xz && \ tar -xf blender.tar.xz && \ mv blender-${BLENDER_VERSION}-linux-x64 /opt/blender && \ rm blender.tar.xz && \ ln -s /opt/blender/blender /usr/bin/blender && \ ln -s /opt/blender/${BLENDER_VERSION}/python/bin/python3 /usr/bin/blender-python
同时修改BlenderProc的pip安装命令,改用Blender自带的Python执行:
RUN /opt/blender/${BLENDER_VERSION}/python/bin/pip install -e .
2. 修复纹理下载脚本执行逻辑
原脚本修改方式易引发异常,直接使用BlenderProc内置命令下载纹理:
## Download textures RUN blender-python -c "import blenderproc as bproc; bproc.download_cc_textures('/root/cc_textures')"
3. 优化网络稳定性(可选)
若构建时网络不稳定,可添加国内镜像源加速:
- 在
apt-get update前添加:RUN sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list - 在pip安装前添加:
RUN /opt/blender/${BLENDER_VERSION}/python/bin/pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
4. 拆分RUN命令便于排查
将长RUN命令拆分为独立步骤,比如把git克隆、pip安装、纹理下载分开,构建时能快速定位具体失败环节。
修改后的完整Dockerfile示例
FROM nvidia/cuda:11.7.1-cudnn8-runtime-ubuntu20.04 ENV DEBIAN_FRONTEND noninteractive ENV BLENDER_VERSION="3.3.1" # 使用国内镜像源加速(可选) RUN sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list # setup timezone RUN echo 'Etc/UTC' > /etc/timezone && \ ln -s /usr/share/zoneinfo/Etc/UTC /etc/localtime && \ apt-get update && \ apt-get install -q -y --no-install-recommends tzdata && \ rm -rf /var/lib/apt/lists/* # Install necessary dependencies RUN apt-get update && apt-get install -q -y --reinstall --no-install-recommends \ curl \ git \ lsb-release \ build-essential \ software-properties-common \ cmake \ python3-pip python3-dev python-is-python3 \ zlib1g-dev \ libgl1-mesa-glx \ libxi6 \ libxrender1 \ libxkbcommon-x11-0 \ && rm -rf /var/lib/apt/lists/* # setup environment ENV LANG C.UTF-8 ENV LC_ALL C.UTF-8 # Install Blender RUN curl -L https://download.blender.org/release/Blender${BLENDER_VERSION%.*}/blender-${BLENDER_VERSION}-linux-x64.tar.xz -o blender.tar.xz && \ tar -xf blender.tar.xz && \ mv blender-${BLENDER_VERSION}-linux-x64 /opt/blender && \ rm blender.tar.xz && \ ln -s /opt/blender/blender /usr/bin/blender && \ ln -s /opt/blender/${BLENDER_VERSION}/python/bin/python3 /usr/bin/blender-python # 设置pip镜像源(可选) RUN /opt/blender/${BLENDER_VERSION}/python/bin/pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple ## BlenderProc WORKDIR /root RUN git clone https://github.com/DLR-RM/BlenderProc.git WORKDIR /root/BlenderProc RUN /opt/blender/${BLENDER_VERSION}/python/bin/pip install -e . ## Download textures RUN blender-python -c "import blenderproc as bproc; bproc.download_cc_textures('/root/cc_textures')" ENV NVIDIA_VISIBLE_DEVICES all ENV NVIDIA_DRIVER_CAPABILITIES compute,utility
内容的提问来源于stack exchange,提问作者bhomaidan90
相关产品推荐
相关产品推荐

