我正在尝试在Mac终端上导入Biopython模块,但会引发以下错误。如果有人可以帮助我解决此问题,将非常有帮助。

>>> from Bio import SeqIO
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Python/2.7/site-packages/Bio/SeqIO/__init__.py", line 317, in <module>
    from Bio._py3k import basestring
  File "/Library/Python/2.7/site-packages/Bio/_py3k/__init__.py", line 235, in <module>
    from urllib2 import urlopen, Request
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 94, in <module>
    import httplib
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 1230, in <module>
    import ssl
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py", line 133, in <module>
    PROTOCOL_SSLv23 = PROTOCOL_TLS
NameError: name 'PROTOCOL_TLS' is not defined


谢谢!!!

最佳答案

PROTOCOL_TLS was added in 2.7.13

奇怪的是,您的错误似乎在ssl模块本身中,该模块应该知道此常数。我猜测_ssl模块提供了OpenSSL的C接口,这完全是错误的。我知道Mac和OpenSSL令CPython开发人员感到头疼,但是我不能给您更多。

尝试执行import _ssl并确保_ssl.PROTOCOL_TLS存在,并且_ssl来自健全的文件系统位置(靠近ssl模块本身的某个位置);如果不是,则您的_ssl模块是一个问题。您可能在_ssl中包含了2.7.13版之前的sys.path模块,即使正在加载2.7.13版之后的ssl模块,该模块希望在PROTOCOL_TLS >,并在找不到时爆炸。

关于python - NameError:名称“PROTOCOL_TLS”未定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50499813/

10-11 22:07
查看更多