網(wǎng)站首頁 編程語言 正文
Python3安裝后SSL問題
問題
編譯安裝時(shí)已經(jīng)指定了–with-openssl的參數(shù)并且指向了你的openssl的源碼包地址,但是編譯安裝之后ssl還是沒有辦法用。
解決
根據(jù)網(wǎng)上的文章介紹,要進(jìn)入到python源碼包解壓后的那個(gè)目錄下的Modules/Setup,注意Setup這個(gè)文件,只有在python完成安裝后才會(huì)生成這個(gè)文件。
并且按照如下圖去除注釋:
可以看到SSL的路徑為/usr/local/ssl,所以如果你看到自己的服務(wù)器上面沒有這個(gè)路徑,那么你就沒有安裝ssl相關(guān)的東西,或者說你的ssl相關(guān)的目錄名不叫ssl。
那么你更改ssl的路徑為你的ssl安裝目錄也可以,或者說你安裝ssl的時(shí)候使用這個(gè)目錄名為安裝目錄。
還有,可以使用libressl來代替openssl,我這次問題就是安裝的libressl來解決的問題,我將libresll安裝到了/usr/local/ssl這里,并且將上面的注釋去除,然后重新make install,問題就解決啦!
注意python3在編譯安裝的時(shí)候提示了,ssl需要用openssl1.0.2或者libressl2.64(不含)以后的版本!反正用最新的就好啦!
Python3安裝過程出現(xiàn)的ssl問題
No module named _ssl或者renaming “_ssl“ since importing it failed
如果安裝Python或者運(yùn)行Python的時(shí)候報(bào)了上面的錯(cuò)誤,那么首先你需要確定自己是否安裝了openssl,若安裝了openssl,請(qǐng)確定openssl的安裝位置及l(fā)ib和include被安裝在哪里,另外在/usr/lib64中是否有l(wèi)ibssl.so.1.1和libcrypto.so.1.1等文件,一般而言openssl的lib及include位置為/usr/local/lib64/ 或 /usr/local/lib/ 或 /usr/local/openssl/lib/ 及 /usr/local/include 或 /usr/local/openssl/include
若沒有安裝,請(qǐng)?jiān)趆ttps://www.openssl.org/source/下載最新版,如下所示
wget https://www.openssl.org/source/openssl-1.1.1d.tar.gz
tar -zxvf openssl-1.1.1d.tar.gz
cd openssl-1.1.1d
./config --prefix=/usr/local --openssldir=/usr/local/openssl
make && make install
ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
openssl環(huán)境安裝好后,就下載目標(biāo)版本的Python安裝包并解壓了
wget https://www.python.org/ftp/python/3.7.6/Python-3.7.6.tgz
tar -zxvf Python-3.7.6.tgz
cd Python-3.7.6
進(jìn)入目錄后很多相關(guān)的教程都會(huì)說要你改下面的文件,但是!!不會(huì)和你說為什么改,只關(guān)顧著說取消注釋就完事了。
vim Modules/Setup.dist
找到SSL相關(guān)配置
#SSL=/usr/local/ssl
#_ssl _ssl.c
# -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl
# -L$(SSL)/lib -lssl -lcrypto
我們先把這幾段取消注釋,然后看紅色部分字段,這個(gè)字段即openssl的lib及include所在的目錄,假設(shè)include目錄在/usr/local/下,且路徑/usr/local/include/openssl存在,那么紅色部分字段改為/usr/local(請(qǐng)根據(jù)實(shí)情)
紫色部分字段,即openssl的lib所在的路徑,請(qǐng)確認(rèn)一下該路徑下是否有l(wèi)ibssl.so.1.1之類的,沒有說明找錯(cuò)了。請(qǐng)把紫色部分字段改為lib64(請(qǐng)根據(jù)實(shí)情)
改完后保存wq
例子
SSL=/usr/local
_ssl_ssl.c
-DUSE_SSL -l$(SSL)/include -l$(SSL)/include/openssl
-L$(SSL)/lib64 -lssl -lcrypto
最后編譯看看是不是好了?
./configure --prefix=/usr/local/python3 --enable-shared CFLAGS=-fPIC && make && make install
總結(jié)
原文鏈接:https://baiyang.blog.csdn.net/article/details/85848571
相關(guān)推薦
- 2022-02-15 Mybatis3 深入源碼 -- getMapper返回代理mapper源碼分析
- 2022-09-02 Redis解決Session共享問題的方法詳解_Redis
- 2022-05-06 mac goland 常用快捷鍵
- 2022-02-28 VM2551:1 Component “pages/tabs/cates“ does not hav
- 2022-07-08 Nginx將http轉(zhuǎn)換成https的詳細(xì)過程_nginx
- 2023-01-15 詳解Qt中線程的使用方法_C 語言
- 2022-07-29 Redis入門基礎(chǔ)常用操作命令整理_Redis
- 2022-07-08 C#中的圖像Image類與打印Printing類用法_C#教程
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支