'module'对象不可调用 - Bio.IUPAC

时间:2011-04-01 21:28:06

标签: python biopython

当我尝试时,

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的一个例子

2 个答案:

答案 0 :(得分: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'>

答案 1 :(得分:1)

Ben给出了一个很清楚的答案来解释这个问题。我猜你复制了错误的例子,

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