Ubuntu Server 24.04创建Python虚拟环境因zlib缺失报错求助
Ubuntu Server 24.04创建Python虚拟环境因zlib缺失报错求助
看起来你碰到的问题很典型——虽然系统已经装了zlib1g-dev,但你的Python 3.12在编译过程中并没有正确链接zlib库,导致虚拟环境里的Python缺失zlib模块,进而让ensurepip执行失败。我给你整理了具体的解决步骤:
问题复现
你执行创建虚拟环境的命令时:
python3.12 -m venv venv
触发了内置的ensurepip命令,报错:
Error: Command '['/root/venv/bin/python3.12', '-m', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.
直接运行ensurepip后看到核心错误:
Traceback (most recent call last): File "<frozen zipimport>", line 518, in _get_decompress_func ModuleNotFoundError: No module named 'zlib'
原因分析
你已经通过apt-get install zlib1g-dev安装了zlib的开发包,但Python在编译时必须提前有这些依赖才能把zlib模块编译进Python二进制文件。如果编译Python时没装zlib1g-dev,后续再装也无法让已编译好的Python获取到zlib模块,只能重新编译Python。
解决步骤
- 安装Python编译所需的全部依赖
先把编译Python需要的所有基础依赖都装全,避免其他模块缺失:
sudo apt-get update && sudo apt-get install build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python3-openssl git
- 重新编译Python 3.12
- 如果是源码安装的Python,找到之前的源码目录;如果没有,下载对应版本的源码(以3.12.4为例):
wget https://www.python.org/ftp/python/3.12.4/Python-3.12.4.tgz tar -xf Python-3.12.4.tgz cd Python-3.12.4
- 配置编译选项,明确指定zlib的路径:
./configure --enable-optimizations --with-zlib=/usr
- 编译并安装(用
altinstall避免覆盖系统默认Python):
make -j$(nproc) sudo make altinstall
- 重新创建虚拟环境
现在再执行创建命令:
python3.12 -m venv venv
应该就能正常创建,不会再出现zlib相关的报错了。
备注:内容来源于stack exchange,提问作者Alex FangSW
相关产品推荐
相关产品推荐

