运行docker-compose build遇pyrsistent模块缺失错误,求解决方案
问题分析与解决
问题本质
你遇到的ModuleNotFoundError不是容器内部的依赖问题,而是宿主机上的docker-compose工具本身缺少pyrsistent模块。从错误日志的路径(/home/desktop/.local/bin/docker-compose、/usr/lib/python3.10/site-packages)可以看出,报错发生在宿主机的Python环境中,和容器里的代码完全无关——这也是为什么你修改容器的requirements.txt没用,直接docker run能正常运行的原因。
解决方法
方法1:直接在宿主机安装缺失模块
根据你宿主机的Python环境,执行对应的安装命令:
- 若使用系统级Python:
sudo pip install pyrsistent - 若使用用户级Python(错误里显示的是
.local路径):pip install --user pyrsistent
方法2:重装/升级docker-compose
卸载现有版本后重新安装:
- 删除当前docker-compose可执行文件:
sudo rm /home/desktop/.local/bin/docker-compose - 重新安装最新版:
pip install --user docker-compose
方法3:改用Docker Compose V2(推荐)
Docker官方现在推荐使用V2版本,它不再依赖宿主机的Python环境,而是作为Docker的插件存在:
- 如果是Docker Desktop用户,默认已经自带V2,直接用
docker compose(注意没有横杠)替代docker-compose即可,比如:docker compose build - 若使用Linux系统,可通过包管理器安装插件:
# Ubuntu/Debian sudo apt update && sudo apt install docker-compose-plugin # CentOS/RHEL sudo yum install docker-compose-plugin
内容的提问来源于stack exchange,提问作者stackuser
相关产品推荐
相关产品推荐

