【问题标题】:Import error ("cannot import name Seq") in biopython for both Python 2.7 and 3.6 [duplicate]在 Python 2.7 和 3.6 的 biopython 中导入错误(“无法导入名称 Seq”)[重复]
【发布时间】:2018-10-19 19:47:33
【问题描述】:

这是我的代码:

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

我不确定问题出在哪里,因为代码运行正常,但过了一段时间,解释器无法导入 Seq 并开始显示错误。我该如何解决这个问题?

【问题讨论】:

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

标签: python biopython


【解决方案1】:

你的脚本:

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

将您的个人 string.py 文件重命名为其他名称。

【讨论】:

    猜你喜欢
    • 2014-01-29
    • 1970-01-01
    • 1970-01-01
    • 2013-05-13
    • 2019-07-14
    • 2018-11-24
    • 1970-01-01
    • 1970-01-01
    • 2019-04-23
    相关资源
    最近更新 更多