4

当我尝试时,

from Bio.Alphabet import IUPAC
from Bio import Seq
my_prot = Seq("AGTACACTGGT", IUPAC.protein)

为什么我会遇到以下错误:

TypeError: 'module' object is not callable

PS:这是 BioPython's Cookbook 中的一个示例

4

2 回答 2

8

在 BioPython 源代码中,“Seq”类位于路径“/Seq/Seq.py”中的文件“ Seq.py ”中

含义...您需要导入 Seq(一个文件),这意味着它是一个“模块”,然后在“模块”“Seq”中调用“Seq”类

所以试试这个:

from Bio.Alphabet import IUPAC
from Bio import Seq
my_prot=Seq.Seq("AGTACACTGGT",IUPAC.protein)

如果您在 Python 中对导入的内容和调用的内容感到困惑,可以这样做:

import Bio.Seq
print type(Bio.Seq)
>>> <type 'module'>
print type(Bio.Seq.Seq)
>>> <type 'classobj'>
于 2011-04-01T21:51:57.337 回答
1

本给出了一个很好的明确答案,解释了这个问题。我猜你把例子复制错了,

>>> from Bio.Seq import Seq
>>> from Bio.Alphabet import IUPAC
>>> my_prot = Seq("AGTACACTGGT", IUPAC.protein)
>>> my_prot
Seq('AGTACACTGGT', IUPACProtein())
>>> my_prot.alphabet
IUPACProtein()

至少,这就是它目前所说的http://www.biopython.org/DIST/docs/tutorial/Tutorial.html

请注意,如果 Biopython 对模块使用 seq(小写字母)和类使用 Seq(标题大小写),则可以避免混淆的原因——这是 Python 现在推荐的做法,请参阅http://www.python.org /dev/peps/pep-0008/

于 2011-04-02T10:56:59.587 回答