【问题标题】:Biopython Indentation ErrorBiopython 缩进错误
【发布时间】:2012-05-13 15:58:22
【问题描述】:

我已经涉足 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 文件,以便我可以从终端运行它?

任何对此问题的见解将不胜感激!

普里亚

【问题讨论】:

  • 你能发布 .py 文件吗?可能,你忘了缩进第 27 行。
  • 我不知道如何直接发布文件,你能告诉我怎么做吗?

标签: indentation biopython


【解决方案1】:

原来我当初学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)

谢谢大家的帮助!

【讨论】:

    【解决方案2】:

    检查所有导入的文件和模块是否具有相同的缩进(制表符或空格以及相同数量的空格)。

    Style guide for Python code你可以阅读:

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

    对于您不想弄乱的真正旧代码,您可以继续使用 8 空格制表符。

    关于制表符和空格:

    切勿混合制表符和空格。

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

    对于新项目,强烈建议仅使用空格而不是制表符。最多 编辑器的功能让这一切变得容易。

    也许 Komodo 会自动更改某些内容(某些编辑会这样做)。尝试在更简单的编辑器中编辑文件并查找选项卡。您可以选择将空格和制表符显示为可见。

    希望对你有帮助!

    【讨论】:

    • 感谢您的建议。我尝试在 Komodo Edit 中用四个空格替换选项卡,它给了我同样的错误。我还尝试将它重新输入到文本编辑器(在 Mac 上)并得到相同的错误。今天我将尝试阅读更多关于此的内容,看看 Komodo Edit 是否正在做一些奇怪的事情。再次感谢!
    猜你喜欢
    • 2016-11-29
    • 2014-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-16
    • 1970-01-01
    相关资源
    最近更新 更多