当我尝试时,
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的一个例子
答案 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>