pyenv安装Python 3.6.8失败:ctypes未编译且段错误,依赖已装仍未解决
解决方案
方法1:调整编译参数禁用优化
Python 3.6.8版本较老,与Linux Mint 21.3所使用的新编译器优化选项存在兼容性问题,容易触发段错误。尝试添加编译参数重新安装:
CFLAGS="-O0" pyenv install 3.6.8
如果上述命令仍失败,尝试更全面的编译参数:
CFLAGS="-fPIC -O0 -march=x86-64" LDFLAGS="-fPIC" pyenv install 3.6.8
方法2:安装兼容的OpenSSL库
Linux Mint 21.3默认使用OpenSSL 3.x,但Python 3.6.8仅支持OpenSSL 1.1.x,这是导致构建失败的常见原因:
- 添加Ubuntu 20.04安全源以获取libssl1.1:
echo "deb http://security.ubuntu.com/ubuntu focal-security main" | sudo tee /etc/apt/sources.list.d/focal-security.list sudo apt update
- 安装libssl1.1:
sudo apt install -y libssl1.1
- 可选:移除临时添加的源,避免影响系统后续更新:
sudo rm /etc/apt/sources.list.d/focal-security.list sudo apt update
- 重新执行Python安装命令:
pyenv install 3.6.8
方法3:手动构建并指定依赖路径
如果前两种方法无效,可手动控制构建过程,明确指定依赖库路径:
- 保留pyenv的构建目录,执行命令:
pyenv install --keep 3.6.8
构建目录路径类似/tmp/python-build.20240218105827.146843/Python-3.6.8,可从报错信息中获取具体路径。
2. 进入构建目录:
cd /tmp/python-build.*.*/Python-3.6.8
- 配置编译选项,指定依赖库路径:
./configure --prefix=$HOME/.pyenv/versions/3.6.8 --with-openssl=/usr/lib/x86_64-linux-gnu --with-libffi=/usr/lib/x86_64-linux-gnu
- 编译并安装:
make -j$(nproc) make install
- 验证安装结果:
pyenv local 3.6.8 python --version
内容的提问来源于stack exchange,提问作者Aleksey Lesnikov
相关产品推荐
相关产品推荐

