Python Twisted应用程序失败,出现错误“;未能加载应用程序:没有名为OpenSSL.SSL的模块;在OSX上

Python Twisted应用程序失败,出现错误“;未能加载应用程序:没有名为OpenSSL.SSL的模块;在OSX上,python,python-2.7,ssl,openssl,twisted,Python,Python 2.7,Ssl,Openssl,Twisted,当通过twistd-n-y chatserver.py运行Twisted(OS X 10.9.3)文件时,它会失败并出现错误: ...line 40, in <module> from OpenSSL.SSL import Error, ZeroReturnError, WantReadError exceptions.ImportError: No module named OpenSSL.SSL Failed to load application: No module

当通过
twistd-n-y chatserver.py运行Twisted(OS X 10.9.3)文件时,它会失败并出现错误:

...line 40, in <module>
    from OpenSSL.SSL import Error, ZeroReturnError, WantReadError
exceptions.ImportError: No module named OpenSSL.SSL

Failed to load application: No module named OpenSSL.SSL
有没有指向正确方向的指针


谢谢

根据提供的信息,我假设您:

  • 没有加载pyOpenSSL(错误表示它正在尝试导入“OpenSSL.SSL”,您尝试导入“SSL”,我不知道“SSL”是否映射到pyOpenSSL)。看

  • twistd运行的是不同的python实例,而不是在终端提示符处得到的
更新:

在评论中给出反馈,并遵循SO提供的信息:以及

尝试运行以下命令以查看当前的python路径:

对于twistd,将以下内容放入文件中,并以与当前运行的twistd相同的方式运行:

from twisted.application.service import Application
from twisted.internet import reactor
import sys

def print_path():
    print "   ----    The path to the twistd python is: " + str(sys.executable) + "   ----"
    reactor.stop()

application = Application("path_test")
reactor.callWhenRunning(print_path)
对于命令行python,只需在交互模式下运行以下命令:

import sys
print sys.executable
在我的例子中(运行OSX10.9.3,使用定制的python)

扭曲:

% twistd -n -y twisted-question-24191967.py
2014-06-13 11:08:19-0400 [-] Log opened.
2014-06-13 11:08:19-0400 [-] twistd 13.2.0 (/usr/bin/python 2.7.5) starting up.
2014-06-13 11:08:19-0400 [-] reactor class: twisted.internet.selectreactor.SelectReactor.
2014-06-13 11:08:19-0400 [-]    ----    The path to the twistd python is: /usr/bin/python   ----
2014-06-13 11:08:19-0400 [-] Main loop terminated.
2014-06-13 11:08:19-0400 [-] Server Shut Down.
以交互方式:

>>> import OpenSSL.SSL
>>> print OpenSSL.SSL.__file__
/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/OpenSSL/SSL.so
>>> import sys
>>> print sys.executable
/usr/bin/python

根据提供的信息,我假设您:

  • 没有加载pyOpenSSL(错误表示它正在尝试导入“OpenSSL.SSL”,您尝试导入“SSL”,我不知道“SSL”是否映射到pyOpenSSL)。看

  • twistd运行的是不同的python实例,而不是在终端提示符处得到的
更新:

在评论中给出反馈,并遵循SO提供的信息:以及

尝试运行以下命令以查看当前的python路径:

对于twistd,将以下内容放入文件中,并以与当前运行的twistd相同的方式运行:

from twisted.application.service import Application
from twisted.internet import reactor
import sys

def print_path():
    print "   ----    The path to the twistd python is: " + str(sys.executable) + "   ----"
    reactor.stop()

application = Application("path_test")
reactor.callWhenRunning(print_path)
对于命令行python,只需在交互模式下运行以下命令:

import sys
print sys.executable
在我的例子中(运行OSX10.9.3,使用定制的python)

扭曲:

% twistd -n -y twisted-question-24191967.py
2014-06-13 11:08:19-0400 [-] Log opened.
2014-06-13 11:08:19-0400 [-] twistd 13.2.0 (/usr/bin/python 2.7.5) starting up.
2014-06-13 11:08:19-0400 [-] reactor class: twisted.internet.selectreactor.SelectReactor.
2014-06-13 11:08:19-0400 [-]    ----    The path to the twistd python is: /usr/bin/python   ----
2014-06-13 11:08:19-0400 [-] Main loop terminated.
2014-06-13 11:08:19-0400 [-] Server Shut Down.
以交互方式:

>>> import OpenSSL.SSL
>>> print OpenSSL.SSL.__file__
/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/OpenSSL/SSL.so
>>> import sys
>>> print sys.executable
/usr/bin/python

在尝试通过pip安装pyopenssl时,我得到了一个已满足的
要求,但OpenSSL导入SSL的
仍会抛出一个错误:
没有名为OpenSSL的模块
,因此很可能是后一种解释。为了记录在案,
ssl
和pyOpenSSL/
OpenSSL
是完全不同的东西。我在尝试通过pip安装pyOpenSSL时,已经满足了
要求,但是
从OpenSSL导入ssl
仍然会抛出一个错误:
没有名为OpenSSL
的模块,所以很可能是后一种解释。请注意,
ssl
和pyOpenSSL/
OpenSSL
是完全不同的。您没有提供足够的信息来诊断问题。你可能已经安装了一些替代Python或者做了一些奇怪的事情;pyOpenSSL预先安装在OS X上。您运行的是什么Python,您使用的是virtualenv,您使用的是pip,还是easy_install,等等?特别是在10.9.3上,如果我导入OpenSSL.SSL并获得:/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/Python/OpenSSL/SSL。那么如果您运行的是现代版本的OS X(并且不运行virtualenv/brew/port/fink)我怀疑你已经损坏了内置python包。你没有提供足够的信息来诊断问题。你可能安装了一些替代python或做了一些奇怪的事情;pyOpenSSL是预先安装在OS X上的。你正在运行什么python,你是在使用virtualenv,你是在使用pip还是easy_install,等等?特别是在10.9.3如果我导入OpenSSL.SSL并获取:/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/Python/OpenSSL/SSL。因此,如果您运行的是现代版本的OS X(而不是运行virtualenv/brew/port/fink),我怀疑您损坏了内置Python包。