文章内容
2024/7/16 1:50:53,作 者: 黄兵
ModuleNotFoundError: No module named 'pyeclib'
我在运行 swift-init proxy start 命令的时候出现了这个错误:ModuleNotFoundError: No module named 'pyeclib'
出现问题的原因:
pyeclib 是 OpenStack Swift 的一个依赖项,用于实现纠删码(erasure coding)。这个错误意味着在你的系统上没有安装 pyeclib 模块。
🧠 一句话解释
pyeclib 是 OpenStack Swift 用来实现对象冗余(EC,Erasure Coding)的一个底层依赖模块。
即使你当前没有用到 EC 功能,它仍然会被 Swift 的核心模块导入,因此必须存在。
解决方案:
安装 pyeclib
1️⃣ 安装编译依赖
安装 pyeclib 之前需要一些构建工具和库。
pyeclib 需要依赖 C 库 liberasurecode,先安装它的开发包:
sudo apt update sudo apt install -y liberasurecode-dev python3-dev gcc
安装 pyeclib:
2️⃣ 激活虚拟环境(如果你是用 venv)
如果你安装 Swift 时是通过虚拟环境(从路径看是这样的 /opt/swift/venv),请先激活:
source /opt/swift/venv/bin/activate
3️⃣ 安装 pyeclib
在虚拟环境中执行:
pip install pyeclib
如果提示缺少依赖或编译失败,可以加上参数:
pip install --no-binary :all: pyeclib
这会强制从源码构建(会慢一点,但最兼容)。
4️⃣ 验证安装是否成功
执行:
python3 -c "import pyeclib"
如果没有错误消息出现,说明 pyeclib 已成功安装。
如果执行 swift-init proxy start 命令还是错误,我们可以安装所有 Swift 依赖:
# 安装所有 Swift 需要的 Python 依赖包
sudo apt-get install -y \
python3-greenlet \
python3-netifaces \
python3-pastedeploy \
python3-pyeclib \
python3-six \
python3-dnspython \
python3-xattr
# 验证关键模块
python3 -c "import pyeclib; import eventlet; import swift; print('所有模块正常')"其它相关推荐:
1、Ubuntu 22.04 安装 OpenStack Swift
2、ImportError: cannot import name 'TimedJSONWebSignatureSerializer' from 'itsdangerous'
3、ImportError: cannot import name 'get_debug_queries' from 'flask_sqlalchemy'
评论列表