文章内容

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'

4、No module named 'MySQLdb'

5、No module _mysql

分享到:

发表评论

评论列表