NameError: имя 'PROTOCOL_TLS' не определено - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь импортировать модули Biopython на моем терминале Mac, но выдает следующую ошибку.Будет очень полезно, если кто-нибудь поможет мне решить эту проблему.

>>> 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

Спасибо !!!

1 Ответ

0 голосов
/ 24 мая 2018

PROTOCOL_TLS был добавлен в 2.7.13 .

Как ни странно, похоже, что ваша ошибка в самом модуле ssl, который должен знать об этой константе;Я предполагаю, что что-то ужасно неправильно с модулем _ssl, который предоставляет интерфейс C для OpenSSL.Я знаю, что Mac и OpenSSL были головной болью для разработчиков CPython, но я не могу дать вам намного больше.

Попробуйте сделать import _ssl и убедиться, что _ssl.PROTOCOL_TLS существует и что _ssl приходитиз нормального расположения файловой системы (где-то рядом с самим модулем ssl);если это не так, ваш _ssl модуль является проблемой.Возможно, у вас есть модуль до 2.7.13 _ssl, каким-то образом включенный в ваш sys.path, даже когда загружается модуль после 2.7.13 ssl, который ожидает найти PROTOCOL_TLS в _ssl и взрывается, когда его невозможно найти.

...