Fedora 36运行docker-compose报错:ModuleNotFoundError: No module named 'compose'
解决Fedora 36上docker-compose的ModuleNotFoundError问题
我帮你分析下这个问题——你遇到的ModuleNotFoundError: No module named 'compose',主要是因为系统预装的docker-compose(版本1.29.2)和Fedora 36默认的Python 3.10存在兼容性冲突,或者你用pip安装的版本没有覆盖系统默认的执行路径,导致系统自带的docker-compose找不到正确的模块。下面给你几个可行的解决办法:
方法一:移除系统旧版,用pip重新安装(适配用户级环境)
- 先卸载系统自带的docker-compose:
sudo dnf remove docker-compose - 用Python3的pip安装docker-compose到用户目录(避免权限问题):
pip3 install docker-compose --user - 把用户本地的bin目录加入环境变量(如果还没加的话),编辑你的
~/.bashrc或~/.zshrc文件,添加一行:export PATH="$HOME/.local/bin:$PATH" - 刷新环境变量让修改生效:
source ~/.bashrc - 最后验证安装是否成功:
docker-compose --version
方法二:使用Docker官方的compose插件(推荐,更稳定)
现在Docker官方已经把compose整合为官方插件,适配最新系统,用法也更统一:
- 先卸载旧的docker-compose:
sudo dnf remove docker-compose - 安装官方的docker-compose-plugin:
sudo dnf install docker-compose-plugin - 注意!安装后需要用
docker compose(没有横杠)的命令格式,比如启动容器:docker compose up -d
方法三:修复系统自带版本的依赖
如果你想保留系统预装的docker-compose,可以尝试给系统级Python环境安装匹配的模块:
sudo pip3 install docker-compose==1.29.2
这样会把缺失的compose模块安装到系统级的Python库中,和系统自带的docker-compose版本匹配。
为什么之前pip install没解决问题?
因为默认pip install docker-compose会把模块安装到用户个人的Python库目录,而系统自带的/usr/bin/docker-compose调用的是系统级的Python环境,它找不到用户目录下的模块,所以要么替换掉系统版本,要么把模块安装到系统级环境才行。
内容的提问来源于stack exchange,提问作者Petr Hejčl
相关产品推荐
相关产品推荐

