Django后端部署YOLOv3视频识别遇FileNotFoundError问题求助
解决Docker环境下YOLOv3 detect.py报错FileNotFoundError: /tmp/Ultralytics不存在
核心原因
Docker容器的文件系统与Windows本地完全隔离,你在Windows本地手动创建的/tmp/Ultralytics不会同步到容器内部,因此报错路径不存在。
具体解决方法
方法1:在Dockerfile中预创建目标目录
打开项目的Dockerfile,在依赖安装完成后添加以下命令,确保容器启动时自动创建目录并赋予读写权限:
RUN mkdir -p /tmp/Ultralytics && chmod 777 /tmp/Ultralytics
重新构建镜像并运行容器:
docker build -t your-django-yolo-image . docker run your-django-yolo-image
方法2:通过Docker挂载映射本地目录
将Windows本地目录挂载到容器的/tmp/Ultralytics,既解决目录不存在问题,又方便查看容器内生成的文件:
- 在Windows本地创建一个目录,比如
C:\yolo-temp - 运行容器时添加挂载参数:
docker run -v C:\yolo-temp:/tmp/Ultralytics your-django-yolo-image
方法3:修改detect.py的路径配置
找到detect.py中指定/tmp/Ultralytics的代码行,将其替换为容器内项目目录下的可写路径(假设你的Django项目根目录为/app):
# 原路径 # save_path = '/tmp/Ultralytics' # 修改为 save_path = '/app/tmp/Ultralytics'
同时在Dockerfile中创建该目录:
RUN mkdir -p /app/tmp/Ultralytics && chmod 777 /app/tmp/Ultralytics
注意事项
- 若使用非root用户运行容器,需确保该用户对目标目录有读写权限,可通过
RUN chown your-user:your-group /tmp/Ultralytics调整权限(替换为容器内实际用户组)。 - 重新构建镜像后,务必重启容器使配置生效。
内容的提问来源于stack exchange,提问作者Lyes.bcb
相关产品推荐
相关产品推荐

