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("AGTACACTGGT", IUPAC.protein)
爲什麼我會遇到以下錯誤:
TypeError: 'module' object is not callable
PS:這是來自BioPython的食譜爲例
在BioPython源代碼中的「SEQ」級位於路徑「/Seq/Seq.py」的文件「Seq.py」
在含義......你需要輸入序列(文件),這意味着它的「模塊」,然後調用類的「序列」中的「模塊」「序列」
那麼試試這個:
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'>
本給了一個很好清晰的答案解釋問題。我猜你複製的例子錯,
>>> 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(標題大小寫) - 這是現在推薦的Python實踐,請參閱http://www.python.org/dev/peps/pep-0008/
通常,當您看到這種模式時,庫作者可能希望您從'Bio.Seq import seq'寫入''。然後像你在問題中那樣使用Seq'類。 – Wesley 2011-04-01 21:56:10
感謝男人:),這幫了我 – 2011-04-01 22:46:35
請注意,自從[此提交](https://github.com/biopython/biopython/commit/6d9d97b6c09c9b01d18d81900ae7d33e0d4694ea)'Seq'已成爲一種新風格的類。所以現在'print type(Bio.Seq.Seq)'會返回''。 –
BioGeek
2016-07-28 13:55:25