You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu18.04下virtualenv中Python3.7报错no module named '_bz2'如何解决

解决方案

方案1:直接复制系统已有的_bz2模块到虚拟环境(优先尝试,无需编译)

_bz2是Python标准库依赖,默认系统级Python会携带对应模块,直接复制到虚拟环境即可修复:

  • 先安装系统级Python3.7的bz2组件:
sudo apt update
sudo apt install python3.7-bz2
  • 查找系统侧_bz2模块的路径,默认路径为/usr/lib/python3.7/lib-dynload/_bz2.cpython-37m-x86_64-linux-gnu.so,如果找不到可以执行sudo find / -name "_bz2.cpython-37m*.so"定位文件
  • 激活你的virtualenv虚拟环境,执行which python获取虚拟环境的Python根目录,比如输出为/home/yourname/your_venv/bin/python,则对应虚拟环境的库路径为/home/yourname/your_venv/lib/python3.7/lib-dynload/
  • 将系统侧的_bz2模块复制到虚拟环境的对应库路径下,示例命令:
cp /usr/lib/python3.7/lib-dynload/_bz2.cpython-37m-x86_64-linux-gnu.so /home/yourname/your_venv/lib/python3.7/lib-dynload/
  • 验证修复结果:在虚拟环境中执行python -c "import bz2",无报错即修复完成。

方案2:重新编译宿主机Python3.7(适用于方案1无效的场景)

virtualenv的虚拟环境是基于宿主机安装的Python3.7创建的,无需在虚拟环境内部编译Python,仅需要重新编译宿主机的Python3.7,之后重建虚拟环境即可:

  • 先安装所有Python编译依赖:
sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev libreadline-dev libffi-dev libbz2-dev
  • 获取你使用的3.7.x版本Python源码压缩包,解压后进入源码目录
  • 配置编译参数,指定安装路径:
./configure --enable-optimizations --prefix=/usr/local/python3.7
  • 编译安装,-j后参数为CPU核心数,可根据设备配置调整:
make -j4
sudo make altinstall
  • 编译完成后,使用新编译的Python3.7重新创建你的virtualenv虚拟环境即可,新环境会自带_bz2模块。

内容的提问来源于stack exchange,提问作者Dummy Head

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 23:39:02