2012-05-04 55 views
1

我一直参与biopython大约一年,最近我升级到Biopython版本1.59。我一直在刷新我的技能与一些教程,但我总是当我运行一个for循环下面的错误,并从biopython库中的任何模块:Biopython缩进错误

IndentationError: expected an indented block 

我只当我所说的.py文件得到这个错误写在科莫多编辑7.0.2版的命令行终端:

Priyas-iMac:~ Priya$ python /Users/priya/Documents/Python/Tutorials/BioParse.py 
    Traceback (most recent call last): 
     File "/Users/priya/Documents/Python/Tutorials/BioParse.py", line 4, in <module> 
     SeqIO.write(rc, "/Users/priya/Documents/Python/Tutorials/ls_orchid_rc.fasta", "fasta") 
     File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Bio/SeqIO/__init__.py", line 400, in write 
     from Bio import AlignIO 
     File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Bio/AlignIO/__init__.py", line 147, in <module> 
     import NexusIO 
     File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Bio/AlignIO/NexusIO.py", line 19, in <module> 
     from Bio.Nexus import Nexus 
     File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Bio/Nexus/Nexus.py", line 15, in <module> 
     import os,sys, math, random, copy 
     File "/Users/Priya/Documents/Python/Tutorials/random.py", line 27 
     randLowHigh(5,10) 
     ^
    IndentationError: expected an indented block 

当我使用命令行来调用,我一年前写了如上它们运行良好的老.py文件。当我直接和类型启动蟒蛇在教程示例一行行正常工作:

Priyas-iMac:~ Priya$ python 
    Python 2.7.3 (default, Apr 19 2012, 00:55:09) 
    [GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin 
    Type "help", "copyright", "credits" or "license" for more information. 
    >>> from Bio import SeqIO 
    >>> for seq_record in SeqIO.parse("/Users/priya/Documents/Python/Tutorials/ls_orchid.txt","fasta"): 
    ...  print seq_record.id 
    ... 
    gi|2765658|emb|Z78533.1|CIZ78533 
    gi|2765657|emb|Z78532.1|CCZ78532 

如何解决我的.py文件这样我就可以从终端运行呢?

任何有关这个问题的见解将不胜感激!

普里亚

+2

你能发布.py文件吗?也许,你忘了缩进第27行。 –

+0

我不确定如何直接发布文件,你能告诉我怎么做吗? – priyasshah

回答

1

检查所有文件,并导入的模块有相同的缩进(制表符,空格,或相同数量的空格)。

Style guide for Python code你可以阅读:

使用每一级缩进4个空格。

对于您不想搞乱的旧代码,您可以继续使用8-space选项卡。

以及有关制表和空格:

切勿混用制表符和空格。

缩进Python最流行的方式是只用空格。 第二最流行的方式是只有选项卡。代码与 缩进混合的制表符和空格应该转换为仅使用空格 。当使用-t选项调用Python命令行解释器 时,它会发出有关代码的警告,该代码会非法混合选项卡 和空格。使用-tt时,这些警告会变成错误。强烈推荐这些选项 !

对于新项目,强烈建议使用仅限空格的选项卡。大多数 编辑器都具有可以轻松完成的功能。

也许科莫多正在自动改变一些东西(一些编辑们)。尝试在更简单的编辑器中编辑文件并查找选项卡。您可以选择将空间和标签显示为可见。

希望它有帮助!

+0

感谢您的建议。我试图用Komodo Edit中的四个空格替换标签,它给了我同样的错误。我也尝试将它输入文本编辑器(在Mac上)新鲜,并得到相同的错误。我今天会尝试阅读更多关于这方面的内容,看看Komodo Edit是否有点奇怪。再次感谢! – priyasshah

+0

看看:http://stackoverflow.com/questions/1024435/howto-fix-python-indentation – viridis

2

事实证明,当我最初学习Python时,我愚蠢地命名了一个教程文件“random.py”来练习制作随机数字生成器。当biopython导入其他所需模块时,它会一直指向该文件而不是随机库模块:

File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Bio/Nexus/Nexus.py", line 15, in <module> 
    import os,sys, math, random, copy 
    File "/Users/Priya/Documents/Python/Tutorials/random.py", line 27 
    randLowHigh(5,10) 

感谢您的帮助,大家!