Python 2.7和3.6的biopython中出现导入错误(“无法导入名称序列”)

Python 2.7和3.6的biopython中出现导入错误(“无法导入名称序列”),python,biopython,Python,Biopython,这是我的代码: from Bio.Seq import Seq from Bio.Alphabet import IUPAC my_seq = Seq("GATCG", IUPAC.unambiguous_dna) for index, letter in enumerate(my_seq): print("%i %s" %(index, letter)) print (len(my_seq)) 我收到一个错误“无法从Bio.Seq导入Seq” 终端上的错误如下所示:

这是我的代码:

from Bio.Seq import Seq

from Bio.Alphabet import IUPAC

my_seq = Seq("GATCG", IUPAC.unambiguous_dna)

for index, letter in enumerate(my_seq):

   print("%i %s" %(index, letter))

   print (len(my_seq))
我收到一个错误“无法从Bio.Seq导入Seq”

终端上的错误如下所示:

 Traceback (most recent call last):
  File "sequence-length.py", line 1, in <module>
    from Bio.Seq import Seq
  File "/home/tanuj/.local/lib/python2.7/site-packages/Bio/Seq.py", line 21, in <module>
    import string  # for maketrans only
  File "/home/tanuj/Desktop/biopython/scripts-test/string.py", line 1, in <module>
    from Bio.Seq import Seq
ImportError: cannot import name Seq
回溯(最近一次呼叫最后一次):
文件“sequence length.py”,第1行,在
从生物序列导入序列
文件“/home/tanuj/.local/lib/python2.7/site packages/Bio/Seq.py”,第21行,在
导入字符串#仅适用于maketrans
文件“/home/tanuj/Desktop/biopython/scripts test/string.py”,第1行,在
从生物序列导入序列
ImportError:无法导入名称序列
我不确定问题出在哪里,因为代码工作正常,但过了一段时间,解释器无法导入Seq并开始显示错误。如何修复此问题?

您的脚本:

from Bio.Seq import Seq

from Bio.Alphabet import IUPAC

my_seq = Seq("GATCG", IUPAC.unambiguous_dna)

print(len(my_seq))

for index, letter in enumerate(my_seq):

    print(index, letter)
在Python 3中对我来说效果很好:

% python3 test.py
5
0 G
1 A
2 T
3 C
4 G
在阅读错误消息时,我猜您的问题是您有一个名为string.py(“/home/tanuj/Desktop/biopython/scripts test/string.py”)的个人代码文件,Python将其与要导入的库string.py混淆:

% touch string.py
% python3 test.py
Traceback (most recent call last):
  File "test.py", line 1, in <module>
    from Bio.Seq import Seq
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/Bio/Seq.py", line 25, in <module>
    from Bio._py3k import range
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/Bio/_py3k/__init__.py", line 170, in <module>
    from urllib.request import urlopen, Request, urlretrieve, urlparse, urlcleanup
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 88, in <module>
    import http.client
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py", line 71, in <module>
    import email.parser
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/email/parser.py", line 12, in <module>
    from email.feedparser import FeedParser, BytesFeedParser
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/email/feedparser.py", line 27, in <module>
    from email._policybase import compat32
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/email/_policybase.py", line 7, in <module>
    from email import header
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/email/header.py", line 16, in <module>
    import email.quoprimime
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/email/quoprimime.py", line 44, in <module>
    from string import ascii_letters, digits, hexdigits
ImportError: cannot import name 'ascii_letters'
% 
%touch string.py
%python3测试.py
回溯(最近一次呼叫最后一次):
文件“test.py”,第1行,在
从生物序列导入序列
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/Bio/Seq.py”,第25行,在
从Bio._py3k进口范围
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/Bio/_-py3k/_-init__.py”,第170行,在
从urllib.request导入urlopen、request、urlretrieve、urlparse、urlcleanup
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py”,第88行,在
导入http.client
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py”,第71行,在
导入email.parser
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/email/parser.py”,第12行,在
从email.feedparser导入feedparser,BytesFeedParser
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/email/feedparser.py”,第27行,在
来自电子邮件。\u policybase import compat32
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/email/_policybase.py”,第7行,在
从电子邮件导入标题
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/email/header.py”,第16行,在
导入email.qooprime
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/email/qooprimime.py”,第44行,在
从字符串导入ascii_字母、数字、十六进制数字
ImportError:无法导入名称“ascii字母”
% 

将您的personal string.py文件重命名为其他文件。

在您的问题被否决之前,我将给您一些提示。首先修复格式,您的错误无法读取。第二,花点时间详细阐述一个问题,并用最好的方式描述它,因为我不明白你的问题是什么,其他人也不明白。第三,解释当它起作用时你尝试了什么,以及现在它不起作用时发生了什么变化。干杯~不要选择标准库有权选择的模块名称。