簡體   English   中英

導入錯誤:沒有名為 _ssl 的模塊

[英]ImportError: No module named _ssl

帶有 Python 2.7 的 Ubuntu Maverick:

我不知道如何解決以下導入錯誤:

>>> import ssl
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/ssl.py", line 60, in <module>
   import _ssl             # if we can't import it, let the error propagate
ImportError: No module named _ssl

更新:我重新編譯了源代碼。 我無法弄清楚如何在下面提到的答案中添加 --with-ssl 選項,而是通過編輯 /Modules/Setup.dist 中有關 SSL 的行來使其工作。

與原始問題無關,但因為這是第一個谷歌結果......我在谷歌 AppEngine上點擊了這個,不得不添加:

libraries:
- name: ssl
  version: latest

app.yaml每個: https : //cloud.google.com/appengine/docs/python/sockets/ssl_support

請注意:這似乎適用於 Python 2.7.9 版,但不適用於 2.7.10 或 2.7.11。

你是從源代碼構建 Python 的嗎? 如果是這樣,您在構建時需要--with-ssl選項。

由於 --with-ssl 不再被識別,我剛剛安裝了libssl-dev 對於基於 debian 的系統:

sudo apt-get install libssl-dev 

對於 CentOS 和 RHEL

sudo yum install openssl-devel

要重新啟動 make 首先清理:

make clean

然后再次啟動並一個接一個執行以下命令:

./configure
make
make test
make install

有關 OpenSSL 的更多信息,請訪問 OpenSSL 上的Ubuntu 幫助頁面

如果你從源代碼構建 Python,這只是一個依賴問題:因為你沒有安裝 OpenSSL 庫,python 會默默地安裝_ssl模塊失敗。 您可以在make命令的最終報告中看到它:

Python build finished, but the necessary bits to build these modules were not found:
_bsddb             _sqlite3           _ssl
_tkinter           bsddb185           dbm
dl                 gdbm               imageop
sunaudiodev
To find the necessary bits, look in setup.py in detect_modules() for the module's name.

在任何標准庫路徑( /usr/lib/usr/local/lib ...)中安裝 OpenSSL lib 應該可以解決問題。 無論如何,這就是我所做的:-)

我遇到了完全相同的問題。 我在沒有重建python的情況下修復了它,如下:

  1. 找到另一台具有相同架構(i386 或 x86_64)和相同 Python 版本(例如:2.7.5)的服務器。 是的,這是最難的部分。 如果找不到任何具有相同 python 版本的服務器,您可以嘗試將 python 從源安裝到另一台服務器。

  2. 在另一台服務器中,檢查 import ssl 是否有效。 它應該工作。

  3. 如果它有效,那么嘗試找到 _ssl 庫,如下所示:

     [root@myserver]# find / -iname _ssl.so /usr/local/python27/lib/python2.7/lib-dynload/_ssl.so
  4. 將此文件復制到原始服務器中。 使用相同的目標文件夾:/usr/local/python27/lib/python2.7/lib-dynload/

  5. 仔細檢查所有者和權限

     [root@myserver]# chown root:root _ssl.so [root@myserver]# chmod 755 _ssl.so
  6. 現在您應該可以導入 ssl。

這在使用 python 2.7.3 的 CentOS 6.3 x86_64 環境中對我有用。 我也安裝了 python 2.6.6,但 ssl 工作正常。

下划線通常表示一個 C 模塊(即 DLL),Python 找不到它。 你自己構建python嗎? 如果是這樣,您需要包含 SSL 支持。

我正在為那些仍然面臨此類問題且無法找到解決方案的人編寫此解決方案。

就我而言,我正在使用

共享主機 (Cpanel Access) Linux CentOS。

我正面臨這個問題

No module named '_ssl'

我嘗試了所有可能的解決方案,但正如您所知,有時事情對您不起作用,並且在托管時您無權訪問完全 root 並運行查詢。 甚至我的托管服務提供商也為我做了……但沒有好的結果。

那么我如何解決您是否使用共享主機並且您已經使用部署了您的 Django 應用程序

設置 Python 應用程序

你只需要降級你的 Python 版本,我從

Python 3.7.3

(因為 Python 3.7 中沒有 SSL 模塊)

Python 3.6.8

通過設置 Python 應用程序。

希望對有同樣問題的人有所幫助

在 Solaris 11 上,我必須修改 setup.py 以在 SSL 包含搜索路徑中包含 /opt/csw/include/openssl。

烏韋

使用包管理器安裝 python-ssl 的補充包,或者使用 -with-ssl 重新編譯 Python(需要安裝 OpenSSL 頭文件/庫)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM