环境信息
- MoviePilot 版本: v2.12.4 (latest)
- Docker 镜像: jxxghp/moviepilot-v2:latest
- Docker 容器内 Python 版本: PYTHON_VERSION=3.10
- 部署方式: Docker (群晖 NAS)
- 代理配置: 通过 PROXY_HOST 环境变量设置,网络连通正常
问题描述
更新到 v2.12.4 后,MoviePilot 在刮削媒体文件时频繁报错,无法完成封面和 .nfo 信息文件的写入。
错误日志
MediaChain.scrape_metadata_event: NamedTemporaryFile() got an unexpected keyword argument delete_on_close
通知中心报错
MediaChain.scrape_metadata_event: NamedTemporaryFile() got an unexpected keyword argument delete_on_close
问题分析
NamedTemporaryFile 的 delete_on_close 参数是 Python 3.12 才引入的特性,但 MoviePilot 的 Docker 镜像目前底层使用的是 Python 3.10。
推测是近期 MediaChain 或相关依赖库的更新中,使用了 Python 3.12+ 的语法,但 Docker 镜像的基础 Python 版本尚未升级,导致兼容性问题。
复现步骤
- 使用
jxxghp/moviepilot-v2:latest 镜像启动容器
- 添加任意需要刮削的媒体文件(电影或剧集)
- 触发元数据刮削(自动或手动刷新元数据)
- 查看实时日志,出现
NamedTemporaryFile() got an unexpected keyword argument delete_on_close 错误
- 刮削失败,无法写入封面和
.nfo 文件
预期行为
刮削应正常完成,封面和信息文件正常写入。
建议修复方案
- 升级 Docker 镜像的基础 Python 版本至 3.12+
- 或在
MediaChain 代码中对 delete_on_close 参数做版本兼容判断
补充说明
- 代理连接正常(PROXY_HOST 已配置且生效)
- 网络请求可以正常到达各数据源站点
- 错误是纯 Python 版本兼容性导致,与网络/代理/站点认证无关
- 回退到 v2.12.3 或 stable 标签可以临时规避此问题
环境信息
问题描述
更新到 v2.12.4 后,MoviePilot 在刮削媒体文件时频繁报错,无法完成封面和
.nfo信息文件的写入。错误日志
通知中心报错
问题分析
NamedTemporaryFile的delete_on_close参数是 Python 3.12 才引入的特性,但 MoviePilot 的 Docker 镜像目前底层使用的是 Python 3.10。推测是近期
MediaChain或相关依赖库的更新中,使用了 Python 3.12+ 的语法,但 Docker 镜像的基础 Python 版本尚未升级,导致兼容性问题。复现步骤
jxxghp/moviepilot-v2:latest镜像启动容器NamedTemporaryFile() got an unexpected keyword argument delete_on_close错误.nfo文件预期行为
刮削应正常完成,封面和信息文件正常写入。
建议修复方案
MediaChain代码中对delete_on_close参数做版本兼容判断补充说明