Ubuntu 22.04下pyenv+poetry虚拟环境报No module named '_lzma'错误
问题根因
这个报错和虚拟环境内的第三方包安装无关,本质是pyenv编译对应Python版本时,没有检测到系统里的lzma开发依赖,最终编译出的Python解释器缺失内置的_lzma C扩展模块。_lzma是解释器层面编译集成的模块,不是PyPI上可分发的第三方包,不管在虚拟环境里执行多少次pip/poetry install都修不好。
解决步骤
- 先安装Ubuntu 22.04下编译Python lzma模块所需的系统依赖
sudo apt update sudo apt install -y liblzma-dev lzma-dev - 重新编译安装pyenv中当前项目使用的Python版本,这步是核心:绝大多数人装完依赖没解决问题,都是漏了这步——pyenv安装的Python是独立编译的独立版本,不会自动链接后续安装的系统依赖,必须重新编译才能把缺失的模块编进去。
先执行pyenv versions查看当前环境绑定的Python版本号(输出结果前面带*的就是当前在用的版本,比如3.10.13、3.11.4这类),然后执行:
安装过程中可以留意编译输出,没有出现# 把<你的Python版本号>替换成实际查到的版本,例如3.10.13 pyenv uninstall -f <你的Python版本号> pyenv install <你的Python版本号>_lzma模块相关的缺失提示就说明编译正常。 - 重建项目的poetry虚拟环境,让虚拟环境绑定到新编译好的、带
_lzma模块的Python解释器上
进入项目根目录执行:poetry env remove --all poetry install - 验证修复结果
进入poetry虚拟环境的Python控制台,执行以下语句不报错即为修复完成:import lzma from _lzma import *
避坑提示
不要尝试用pip install lzma这类命令修复,PyPI源上的lzma包不是Python内置的_lzma模块实现,安装后也解决不了这个报错。
内容的提问来源于stack exchange,提问作者nepipi6200
相关产品推荐
相关产品推荐

