Python 名称错误:名称';协议';没有定义
我试图在我的Mac终端上导入Biopython模块,但出现以下错误。如果有人能帮我解决这个问题,那将非常有帮助Python 名称错误:名称';协议';没有定义,python,python-2.7,biopython,Python,Python 2.7,Biopython,我试图在我的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
>>> 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
来自Bio导入SeqIO的>>
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/Library/Python/2.7/site packages/Bio/SeqIO/__init___.py”,第317行,在
从Bio._py3k导入基串
文件“/Library/Python/2.7/site-packages/Bio/_-py3k/_-init__.py”,第235行,在
从urllib2导入urlopen,请求
文件“/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py”,第94行,在
导入httplib
文件“/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py”,第1230行,在
导入ssl
文件“/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py”,第133行,在
协议\u SSLv23=协议\u TLS
NameError:未定义名称“协议\u TLS”
谢谢你
奇怪的是,您的错误似乎出现在ssl
模块本身,它应该知道这个常量;我猜为OpenSSL提供C接口的\uSSL
模块有严重的问题。我知道Mac和OpenSSL一直是CPython开发人员头疼的问题,但我不能给你比这更多的东西
尝试执行
import\u ssl
并确保\u ssl.PROTOCOL\u TLS
存在并且\u ssl
来自一个正常的文件系统位置(在ssl
模块本身附近);如果没有,则说明您的\u ssl
模块有问题。您的sys.path
中可能包含了2.7.13之前的\u ssl
模块,即使是在加载2.7.13之后的ssl
模块时,该模块也会在\u ssl
中找到协议
,当找不到时会爆炸。非常感谢!!我在bashrc文件中设置了一大堆不必要的东西。我删除了以下内容,它起了作用->#export PATH=“/usr/local/bin:$PATH”#export PATH=“/usr/local/opt/hdf5@1.8.18/bin:$PATH“是/usr/local/lib/python2.7/lib dynload/\u ssl。所以ssl模块的路径是错误的?@kinORnirvana:看起来不错(有多个可能的路径,但看起来像是典型的路径)。问题是确定ssl是否有它应该有的常数。我对这项调查太厌倦了,通过编辑/usr/lib/python2.7/ssl.py
(添加协议\u TLS=2
行)完成了调查。在那之后,(运行pip的)问题就解决了(但我不确定我没有弄坏什么东西)。