我已经涉足biopython大约一年了,最近我升级到了Biopython版本1.59。我一直在通过一些教程来更新我的技能,但是当我运行for循环和biopython库中的任何模块时,我总是得到下面的错误:
IndentationError: expected an indented block只有当我从命令行终端调用用Komodo Edit版本7.0.2编写的.py文件时,我才会得到这个错误:
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文件时,它们运行得很好。当我直接启动python并逐行输入教程示例时,它工作得很好:
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文件,这样我就可以从终端运行它了?
对这个问题的任何见解都将不胜感激!
Priya
发布于 2012-05-05 01:09:18
事实证明,当我最初学习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)谢谢大家的帮助!
发布于 2012-05-04 22:54:53
检查导入的所有文件和模块是否都有相同的缩进(制表符或空格以及相同数量的空格)。
从Style guide for Python code中,您可以读取:
在每个缩进级别使用4个空格。
对于那些你不想弄得一团糟的老代码,你可以继续使用8空格的制表符。
关于制表符和空格:
从不混用制表符和空格。
最流行的缩进Python的方法是只使用空格。第二种最流行的方式是只使用标签。使用制表符和空格混合缩进的代码应转换为仅使用空格。当使用-t选项调用Python命令行解释器时,它会发出有关非法混合制表符和空格的代码的警告。使用-tt时,这些警告会变成错误。强烈建议您使用这些选项!
对于新项目,强烈建议在制表符上仅使用空格。大多数编辑器都具有使这一点易于实现的功能。
也许Komodo正在自动更改某些内容(有些编辑器确实是这样做的)。尝试在更简单的编辑器中编辑该文件,并查找选项卡。您可以选择将空间和选项卡显示为可见。
希望它能帮上忙!
https://stackoverflow.com/questions/10443195
复制相似问题