“Python3.12pip联网安装库文件出错,ssl模块不可用”的解决方法

这篇具有很好参考价值的文章主要介绍了“Python3.12pip联网安装库文件出错,ssl模块不可用”的解决方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Python版本需要和openssl的版本需要相对匹配,在Python3.7之后的版本,依赖的openssl必须要是1.1.1或1.0.2之后的版本,而CentOS7安装的openssl1.0.2k无法其满足要求,这将会导致在使用pip命令在线安装库文件时出错。因此,需要升级openssl,最好是安装完openssl再重新编译安装python3。

centos7 python 3.12与哪个版本的openssl匹配,pip,ssl,网络协议,centos,linux,python

centos7 python 3.12与哪个版本的openssl匹配,pip,ssl,网络协议,centos,linux,python

一、安装新版openssl3.1.4

  1. 使用yum命令安装相关依赖,没有这一步,后面安装python很可能会出错,pip问题也未能得到解决。
yum group install 'Development Tools'
yum -y install zlib-devel zlib perl*
yum -y install gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl openssl-devel xz xz-devel libffi-devel libuuid-devel perl-core epel-release tk-devel ncurses-libs gdbm-devel libdbi-devel python-backports-lzma
  1. 更新系统已安装软件
yum -y install
  1. 下载OpenSSL

这里选择安装openssl3.1.4,也可以安装其他版本,源代码可在https://www.openssl.org/source/下载
centos7 python 3.12与哪个版本的openssl匹配,pip,ssl,网络协议,centos,linux,python

先切换到/usrlocal/src目录下,在使用wget下载源代码,下载完成后提取openssl3.1.4.tar.gz文件,并切换到openssl-3.1.4目录

cd /usr/local/src/
wget https://www.openssl.org/source/openssl-3.1.4.tar.gz
tar -xzvf openssl-3.1.4.tar.gz
cd opensl-3.1.4

centos7 python 3.12与哪个版本的openssl匹配,pip,ssl,网络协议,centos,linux,python

  1. 编译、安装openssl3.1.4

目录为参考,自己可指定目录安装:–prefix=自定义目录

./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl --shared zlib

编译源代码

make

安装前测试,最后输出结果有pass说明无错误可安装

make test

开始安装

make install
  1. 配置链接

配置openssl的共享库,使openssl二进制文件从/usr/local/openssl/lib目录加载库文件。
切换到/etc/ld.so.cof.d目录下,创建新的配置文件:openssl-3.1.4.conf

cd /etc/ld.so.conf.d/
vim openssl-3.1.4.conf

按i,然后复制下面并黏贴openssl库路径目录,保存退出(按Esc,然后键入单引号中的内容 ’ :wq’,最后按Enter回车)

/usr/local/openssl/lib64

重载动态链接,/usr/local/ssl/lib目录下的openssl库已经被加载了

ldconfig -v

centos7 python 3.12与哪个版本的openssl匹配,pip,ssl,网络协议,centos,linux,python

备份旧的软连接

mv /bin/openssl /bin/openssl.bak
mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak 
mv /usr/local/bin/openssl /usr/local/bin/openssl.bak
mv /usr/lib64/libssl.so.1.0.2k /usr/lib64/libssl.so.1.0.2k.bak
mv /usr/lib64/libcrypto.so.1.0.2k /usr/lib64/libcrypto.so.1.0.2k.bak

创建新的软连接(不存在链接跳过即可)

ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
ln -s /usr/local/openssl/bin/openssl /usr/local/bin/openssl
ln -s /usr/local/openssl/lib64/libcrypto.so.3 /lib/libcrypto.so.3
ln -s /usr/local/openssl/lib64/libcrypto.so.3 /lib/libcrypto.so.6
ln -s /usr/local/openssl/lib64/libssl.so.3  /usr/lib64/libssl.so.3
ln -s /usr/local/openssl/lib64/libcrypto.so.3  /usr/lib64/libcrypto.so.3
ln -s /usr/local/openssl/lib64/libssl.so  /usr/lib64/libssl.so
ln -s /usr/local/openssl/lib64/libcrypto.so  /usr/lib64/libcrypto.so

如果链接已存在无法创建,可以考虑备份或删除

#查看软链接(符号链接)指向的目标文件
readlink -f 软链接名称
#备份
mv 软链接名称 软链接名称.bak
#删除
rm -rf 软链接名称

修改目录权限

chmod -R 755 /usr/local/openssl/

配置库文件搜索路径

echo "/usr/local/openssl/lib64" >> /etc/ld.so.conf

重新配置动态链接器的缓存,-v 输出详细信息

/sbin/ldconfig -v

为openssl创建新的环境文件

vim /etc/profile.d/openssl.sh

将下面的配置信息黏贴到openssl.sh文件中,然后保存退出

#Set OPENSSL_PATH
OPENSSL_PATH="/usr/local/openssl/bin"
export OPENSSL_PATH
PATH=$PATH:$OPENSSL_PATH
export PATH

centos7 python 3.12与哪个版本的openssl匹配,pip,ssl,网络协议,centos,linux,python
赋予openssl.sh文件执行权限,不然将无法执行

chmod +x /etc/profile.d/openssl.sh

加载openssl环境并检查PATH bin目录

source /etc/profile.d/openssl.sh
echo $PATH

centos7 python 3.12与哪个版本的openssl匹配,pip,ssl,网络协议,centos,linux,python

检查openssl文件

which openssl

查看openssl是否为刚才安装的3.1.4版本

openssl version -a

centos7 python 3.12与哪个版本的openssl匹配,pip,ssl,网络协议,centos,linux,python

二、安装Python3.12.0

  1. 相关依赖前面已经安装好了,这里不再赘述。缺少依赖将导致python3.12.0安装失败,即使安装成功,也解决不了pip无法联网下载安装库文件的问题。
  2. 下载并解压python3.12.0源码
wget https://www.python.org/ftp/python/3.11.2/Python-3.11.2.tgz
tar -xzvf Python-3.12.0.tgz
cd Python-3.12.0
chmod +x configure
  1. 编译安装

指定安装在/usr/local/python3目录下,修改”–prefix=“后面的参数可以更改安装目录

./configure --prefix=/usr/local/python3

编译,-j 后面的数字为参与编译的CPU核心数,根据个人机器配置调整,也可以直接使用make

make -j 4

altinstall 和install,二者的一个重要区别在于,后者会创建符号链接,将 python3 等命令链接到正在安装的新版本 Python3 上,这可能会对系统造成破坏

make altinstall

删除一些临时文件(删除源代码(C\C++ code)生成的执行文件和所有的中间目标文件)

make clean

在/usr/bin路径下创建python3软链,指向已安装的python3.12

ln -s /usr/local/python3/bin/python3.12 /usr/bin/python3

/usr/bin路径下创建pip软链,指向已安装的pip3.12

ln -s /usr/local/python3/bin/pip3.12 /usr/bin/pip
  1. 验证是否成功安装python

查看python3版本是否为刚才安装的3.12.0

python3 -V

查看pip版本

pip -V

查看是否成功安装ssl模块
方法1:在python3环境看是否能导入ssl库而不出错,如下所示:

[root@localhost Python-3.12.0]# python3
Python 3.12.0 (main, Nov 13 2023, 21:27:23) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import ssl
>>> 

方法2:直接pip在线安装库文件,不出错即可

#flask可换成其他
pip install flask

centos7 python 3.12与哪个版本的openssl匹配,pip,ssl,网络协议,centos,linux,python
至此,openssl3.1.4和python3.12.0已成功安装完成,pip功能也能正常使用!文章来源地址https://www.toymoban.com/news/detail-773125.html

到了这里,关于“Python3.12pip联网安装库文件出错,ssl模块不可用”的解决方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux基础】库文件

    (꒪ꇴ꒪ ),hello我是 祐言 博客主页:C语言基础,Linux基础,软件配置领域博主🌍 快上🚘,一起学习! 送给读者的一句鸡汤🤔: 集中起来的意志可以击穿顽石! 作者水平很有限,如果发现错误,可在评论区指正,感谢🙏 ​​         在Linux系统中,库文件(Library files)是一

    2024年02月16日
    浏览(47)
  • 【实用技巧】更改ArduinoIDE默认库文件位置,解放系统盘,将Arduino15中的库文件移动到其他磁盘

    本文主要介绍更改Arduino IDE (含2.0以上版本)默认库文件位置的方法。  原创文章,转载请注明出处: 【实用技巧】更改ArduinoIDE默认库文件位置,解放C盘,将Arduino15中的库文件移动到其他磁盘-CSDN博客 文章浏览阅读185次。本文主要介绍更改Arduino IDE (含2.0以上版本)默认库

    2024年02月03日
    浏览(63)
  • linux下头文件及库文件搜索路径知识汇总

    跟gcc相关的搜索目录: 安装gcc时,如果有指定prefix的话,那么系统的默认搜索路径为: C_INCLUDE_PATH:编译 C 程序的时候使用的环境变量 CPLUS_INCLUDE_PATH:编译 C++ 程序的时候使用的环境变量 CPATH:编译 C、 C++及Objective-C 程序时使用的环境变量 OBJC_INCLUDE_PATH:编译 Objective-C 程序

    2023年04月27日
    浏览(39)
  • C标准库文件&常用函数

    编号 头文件 C标准版本 介绍 1 assert.h C89/C90 条件编译宏,将参数与零比较 2 ctype.h C89/C90 用来确定包含于字符数据中的类型的函数 3 errno.h C89/C90 报告错误条件的宏 4 float.h C89/C90 浮点数类型的极限 5 limits.h C89/C90 基本类型的大小 6 locale.h C89/C90 本地化工具 7 math.h C89/C90 常用数据函

    2024年02月12日
    浏览(46)
  • C++有哪些常用的库文件

    常用库文件: iostream:  输入输出流库,包含cin、cout、cerr等标准输入输出对象。 string : 字符串库,包含字符串类型std::string及相关操作函数。 vector : 动态数组库,包含vector类型及相关操作函数。 map:  字典库,包含map、multimap、set、multiset等关联容器类型及相关操作函数。 algorithm

    2024年02月02日
    浏览(42)
  • 7-LINUX--库文件的生成与使用

    库是一组预先编译好的方法的集合。Linux系统存储的库的位置一般在:/lib 和 /usr/lib。 在 64 位的系统上有些库也可能被存储在/usr/lib64 下。库的头文件一般会被存储在 /usr/include 下或其子目录下。 库有两种,一种是静态库,其命令规则为 libxxx.a,一种是共享库,其命令规则为

    2024年03月16日
    浏览(46)
  • 现代CMake高级教程 - 第 3 章:链接库文件

    双笙子佯谬老师的【公开课】现代CMake高级教程课程笔记 main.cpp 调用 mylib.cpp 里的 say_hello 函数 1. 直接链接到一起编译 2. mylib 作为一个静态库 编译: 生成了 libmylib.a: 3. mylib 作为一个动态库 编译: 4. mylib 作为一个对象库 对象库类似于静态库,但不生成 .a 文件,只由 CMake

    2024年02月02日
    浏览(41)
  • 通过 CMake 制作库文件 静态库 和 动态库

    CMake Calc 项目 在这里有 add.c,div.c,mult.c,sub.c,main.c,head.h 二、生成静态库  CMakeLists.txt  CMakeLists.txt   (也可以写成这样) 执行命令:  三、生成动态库 CMakeLists.txt    CMakeLists.txt   (也可以写成这样) 

    2024年01月16日
    浏览(50)
  • makefile 编译动态链接库使用(.so库文件)

    动态链接库:不会把代码编译到二进制文件中,而是在运行时才去加载, 好处是程序可以和库文件分离,可以分别发版,然后库文件可以被多处共享 动态链接库 动态:动态加载 链接:二进制文件和库文件分离。 库 库文件 .so 新建一个文件TestSo 编译一下 main.cpp 写好之后我们

    2024年01月23日
    浏览(42)
  • 第十二部分 使用 make 更新函数库文件

    目录 前言  一、函数库文件的成员 二、函数库成员的隐含规则 三、函数库文件的后缀规则 四、注意事项         函数库文件也就是对 Object 文件(程序编译的中间文件)的打包文件。在 Unix 下,一 般是由命令\\\"ar\\\"来完成打包工作。         一个函数库文件由多个文件

    2024年01月20日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包