openSUSE下pyenv安装Python3.10.5提示prefer_openssl11不存在的解决方法
报错根因
- 本地pyenv内置的
python-build构建插件版本为20180424,过于老旧,无法识别新版Python构建脚本中用于适配OpenSSL 1.1版本的prefer_openssl11内置函数,直接触发命令不存在的报错,中断构建流程。 - 此前安装的编译依赖不全,缺少OpenSSL 1.1、libffi等Python核心模块必须的开发头文件,即使绕过当前报错,后续编译也会失败。
解决步骤
- 升级本地pyenv到最新版本,同步更新内置的python-build插件
cd ~/.pyenv && git fetch --all && git reset --hard origin/master source ~/.bashrc
- 补全openSUSE 15.3环境下编译Python 3.10所需的全量依赖
sudo zypper install -y readline-devel sqlite3-devel libbz2-devel \ openssl-1_1-devel libffi-devel zlib-devel xz-devel tk-devel \ libuuid-devel gdbm-devel ncurses-devel
- 显式指定OpenSSL 1.1的依赖路径,执行目标版本Python安装
PYTHON_CONFIGURE_OPTS="--with-openssl=/usr" \ CFLAGS="-I/usr/include/openssl-1_1" \ LDFLAGS="-L/usr/lib64/openssl-1_1" \ pyenv install 3.10.5
- 安装完成后验证可用性
pyenv global 3.10.5 python --version # 正常输出 Python 3.10.5 即为安装成功
异常处理:如果升级pyenv后依旧报相同的
prefer_openssl11: command not found错误,直接删除~/.pyenv目录,重新执行最初的pyenv安装流程即可,本质是本地旧版本插件残留没有被新版本文件覆盖。
内容的提问来源于stack exchange,提问作者zest16
相关产品推荐
相关产品推荐

