ImportError:没有名为_ssl的模块

时间:2011-02-26 18:21:46

标签: python python-2.7

Ubuntu Maverick w / Python 2.7:

我无法弄清楚如何解决以下导入错误:

>>> 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的行来实现这一点。

9 个答案:

答案 0 :(得分:59)

与原始问题无关,但因为这是Google的第一个结果......我在 Google AppEngine 上点击了这个并且不得不添加:

$vals

app.yaml 每个:{{3}}

请注意:这似乎适用于Python 2.7.9版,但不适用于2.7.10或2.7.11。

答案 1 :(得分:25)

您是否从源代码构建了Python?如果是这样,您在构建时需要--with-ssl选项。

答案 2 :(得分:12)

如果你从源代码构建Python,这只是依赖性的问题:因为你错过了安装的OpenSSL lib,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.

在任何标准lib路径(/usr/lib/usr/local/lib ...)中安装OpenSSL lib应该可以解决问题。无论如何这就是我做的: - )

答案 3 :(得分:7)

我有完全相同的问题。我修复它而不重建python,如下所示:

1)使用相同的架构(i386或x86_64)和相同的python版本(例如:2.7.5)查找另一台服务器。是的,这是困难的部分。如果找不到任何具有相同python版本的服务器,可以尝试将python从源安装到另一台服务器。

2)在另一台服务器中,检查import ssl是否有效。它应该工作。

3)如果有效,请尝试找到_ssl lilbrary ,如下所示:

[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工作正常。

希望它有所帮助。

答案 4 :(得分:6)

由于--with-ssl不再被识别,我刚刚安装了libssl-dev:

sudo apt-get install libssl-dev 

要通过以下方式重新启动make:

make clean

然后重新开始并一个接一个地执行以下命令:

./configure
make
make test
make install

有关OpenSSL的更多信息,请访问Ubuntu Help Page on OpenSSL

答案 5 :(得分:2)

下划线通常表示C模块(即DLL),Python无法找到它。你自己构建python了吗?如果是这样,您需要包含SSL支持。

答案 6 :(得分:0)

使用包管理器或者安装python-ssl的补充包 使用-with-ssl重新编译Python(需要安装OpenSSL头文件/库)。

答案 7 :(得分:0)

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

乌韦

答案 8 :(得分:0)

我正在为仍然面临此类问题并且找不到解决方案的人编写此解决方案。

我正在使用

  

Linux CentOS共享托管(面板访问)。

我遇到了这个问题

No module named '_ssl'

我尝试了所有可能的解决方案,但正如您所知,有时候某些事情对您不起作用,并且在托管时,您无权访问完全根目录和运行查询。 甚至我的托管服务提供商也帮了我..但是没有好的结果。

那么我如何解决您是否使用共享托管并且您已经使用

部署了Django应用的问题
  

设置Python应用

     

您只需要降级Python版本,我从

降级了
Python 3.7.3

(因为Python 3.7中没有SSL模块) 到

Python 3.6.8

通过安装Python应用程序。

希望这对遇到同样问题的人会有所帮助,