当我尝试时,
from Bio.Alphabet import IUPAC
from Bio import Seq
my_prot = Seq("AGTACACTGGT", IUPAC.protein)
为什么我会遇到以下错误:
TypeError: 'module' object is not callable
PS: 这是 BioPython 的菜谱中的一个例子。
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'>
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/。
from Bio.Seq import Seq
。然后像在您的问题中一样使用Seq
类。 - WesleySeq
已成为新式类。因此现在print type(Bio.Seq.Seq)
将返回<type'type'>
。 - BioGeek