2012-05-04 15 views
1

私はbiopythonを約1年間使いこなしていましたが、最近私はBiopythonリリース1.59にアップグレードしました。私はいくつかのチュートリアルで自分のスキルをリフレッシュしてきたが、私はいつも、私はforループを実行すると、以下のエラーとbiopythonライブラリから任意のモジュールを得る:Biopythonインデントエラー

IndentationError: expected an indented block 

私だけ、私はの.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ファイルを呼び出すには、コマンドラインを使用します。コマンドライン端末からコモド編集バージョン7.0.2で記述されました。私はラインでチュートリアルの例ラインで直接の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ファイルを修正することができますどのように?

この問題に関する洞察は非常に高く評価されます。

プリヤ

+2

.pyファイルを投稿できますか?おそらく、行27をインデントするのを忘れてしまったでしょう。 –

+0

ファイルを直接投稿する方法がわかりません。どうすればいいですか? – priyasshah

答えて

1

インポートされたすべてのファイルとモジュールは同じインデント(タブまたはスペースとスペースの数が同じ)があるかどうかを確認します。

Style guide for Python codeあなたが読むことができるから:

使用インデントレベルごとに4つのスペースを。

混乱させたくない古いコードについては、引き続き8桁のタブを使用できます。

とタブとスペースについて:

タブとスペースを混在させることはありません。

Pythonをインデントする最も一般的な方法は、スペースのみで行います。 2番目に普及しているのはタブだけです。 のタブとスペースを混ぜたコードは、 を排他的に使用して変換する必要があります。 の-tオプションを使用してPythonコマンドラインインタプリタを呼び出すと、タブ とスペースを不法に混ぜたコードに関する警告が発行されます。 -ttを使用すると、これらの警告はエラーになります。これらのオプション をお勧めします。

新しいプロジェクトでは、スペースのみをタブより強くお勧めします。ほとんどの エディタには、これを簡単に行う機能があります。

多分、コモドは何かを自動的に変更しています(編集者の中にはいくつかあります)。より一般的なエディタでファイルを編集し、タブを探してみてください。スペースとタブを表示可能にするオプションがあります。

希望すると助かります!

+0

提案していただきありがとうございます。私はKomodo Editで4つのスペースでタブを置き換えようとしましたが、同じエラーが出ます。私もそれをテキストエディタ(Mac)上で新しく入力してみて、同じエラーが発生しました。私は今日これについてもう少し試してみて、コモド・エディットが変わったことをしているかどうかを見てみましょう。再度、感謝します! – 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) 

おかげで、みんな!