網(wǎng)站首頁 編程語言 正文
Python3安裝后SSL問題
問題
編譯安裝時已經(jīng)指定了–with-openssl的參數(shù)并且指向了你的openssl的源碼包地址,但是編譯安裝之后ssl還是沒有辦法用。
解決
根據(jù)網(wǎng)上的文章介紹,要進(jìn)入到python源碼包解壓后的那個目錄下的Modules/Setup,注意Setup這個文件,只有在python完成安裝后才會生成這個文件。
并且按照如下圖去除注釋:
可以看到SSL的路徑為/usr/local/ssl,所以如果你看到自己的服務(wù)器上面沒有這個路徑,那么你就沒有安裝ssl相關(guān)的東西,或者說你的ssl相關(guān)的目錄名不叫ssl。
那么你更改ssl的路徑為你的ssl安裝目錄也可以,或者說你安裝ssl的時候使用這個目錄名為安裝目錄。
還有,可以使用libressl來代替openssl,我這次問題就是安裝的libressl來解決的問題,我將libresll安裝到了/usr/local/ssl這里,并且將上面的注釋去除,然后重新make install,問題就解決啦!
注意python3在編譯安裝的時候提示了,ssl需要用openssl1.0.2或者libressl2.64(不含)以后的版本!反正用最新的就好啦!
Python3安裝過程出現(xiàn)的ssl問題
No module named _ssl或者renaming “_ssl“ since importing it failed
如果安裝Python或者運(yùn)行Python的時候報了上面的錯誤,那么首先你需要確定自己是否安裝了openssl,若安裝了openssl,請確定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
若沒有安裝,請在https://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)的教程都會說要你改下面的文件,但是!!不會和你說為什么改,只關(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
我們先把這幾段取消注釋,然后看紅色部分字段,這個字段即openssl的lib及include所在的目錄,假設(shè)include目錄在/usr/local/下,且路徑/usr/local/include/openssl存在,那么紅色部分字段改為/usr/local(請根據(jù)實情)
紫色部分字段,即openssl的lib所在的路徑,請確認(rèn)一下該路徑下是否有l(wèi)ibssl.so.1.1之類的,沒有說明找錯了。請把紫色部分字段改為lib64(請根據(jù)實情)
改完后保存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)推薦
- 2023-03-13 Pandas數(shù)據(jù)分析常用函數(shù)的使用_python
- 2022-12-11 Django切換數(shù)據(jù)庫和遷移數(shù)據(jù)詳解_python
- 2022-04-05 vxe-table中vxe-grid的使用
- 2022-04-05 Go語言空結(jié)構(gòu)體詳解_Golang
- 2022-11-18 Android?使用壓縮紋理的方案_Android
- 2022-02-28 el-dialog 的關(guān)閉事件執(zhí)行兩次
- 2022-11-26 詳解Python如何實現(xiàn)惰性導(dǎo)入-lazy?import_python
- 2023-12-13 pyinstaller打包exe時報錯問題記錄[makespec options not valid
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- 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錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支