python3解決 ModuleNotFoundError: No module named '_ssl'


前提是已經安裝了openssl

如果沒按裝,需要yum安裝
安裝依賴:yum install openssl-devel 

問題

當我在python3虛擬環境中導入ssl模塊時報錯,報錯如下:

(py3) [root@localhost Python-3.6.3]# python3
Python 3.6.3 (default, Nov 19 2018, 14:18:18)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import ssl
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/python3/lib/python3.6/ssl.py", line 101, in <module>
    import _ssl             # if we can't import it, let the error propagate
ModuleNotFoundError: No module named '_ssl'

解決辦法如下:

1.首先進入Python-3.6.3目錄,就是你解壓后安裝python3.6的目錄文件。
\2. cd 到 Modules 目錄里,找到Setup和Setup.dist文件,將下面幾行注釋去掉。

  • Setup下更改
  • vim Setup (大概在51%的位置)
    img
  • Setup.dist下的更改
  • vim Setup.dist (大概在50%的位置)
    img

3.編譯安裝

cd ..
./configure --prefix=/usr/local/python3
make
make install

4.刪除舊的軟連接,創建新的軟連接(很重要)

rm -rf /usr/bin/python3
ln -s /usr/local/bin/python3.6 /usr/bin/python3

5、刪除之前的虛擬環境,重新創建一個新的虛擬環境,導入ssl包就ok了

# 刪除之前建議先將之前的安裝的包導出
# 進入虛擬環境
source py3/bin/activate
# 備份文件
pip freeze > requirements.txt
# 退出虛擬環境
deactivate
# 刪除虛擬環境
rm -rf py3
# 創建新的虛擬環境
virtualenv py3 -p /usr/bin/python3
# 進入到新的虛擬環境中
source py3/bin/activate
# 導入ssl包
(py3) [root@localhost /]# python
Python 3.6.3 (default, Nov 21 2018, 22:23:54)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import ssl
>>>
 
# 恢復之前的python環境
pip install -r requirements.txt

若用到uwsgi,且需要import ssl,則需要把之前uwsgi卸載,重新編譯安裝

pip3 uninstall uwsgi
sudo pip3 install uwsgi -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
# 刪除原來的軟鏈接,設置新的軟鏈接
sudo ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM