2012-02-16 4 views
1

pydevプラグインを使用してEclipseで開発しました。 Eclipseでプロジェクトを実行すると、すべて正常に動作します。しかし、コマンドラインから実行しようとすると、私はインポートエラーが発生します。私はこのようなディレクトリ構造を持っている:Python:ImportError with package

 TGRParser 
     |----tgr 
       |--graph 
       |--main 
       | |-- main.py 
       | |-- __init__.py 
       |--parser 
        |--__init__py 
        |--parserClass.py 

今、私がメインパッケージ(TGRParser/TGR /メイン)でモジュールのメイン(main.py)でクラスのメインを持っています。今、クラスのメインに私はそれは日食が、すべてで、コマンドラインからdoesntの仕事の中から、正常に動作します

from tgr.parser.parserClass import Parser 

を呼び出そう。私はsys.pathをチェックしました。それらは両方ともcmd行とeclipseで同じです。

それは言う:

File "main.py", line 6, in <module> 
from tgr.parser.parserClass import Parser 
ImportError: No module named tgr.parser.parserClass 
+1

すべてのパッケージに\ __ init__.pyファイルがありますか? –

答えて

2

があなたのPYTHONPATH環境変数にTGRParserディレクトリを追加します。

+0

ありがとう私はこの解決策と一緒に行くだろう – kosta5

1

あなたがメインフォルダ内

python main.py

として、コマンドラインでこれを実行している場合TGRは、いくつかのディレクトリにアップしているので、あなたはimport tgr...を使用することはできません。パッケージ内でプログラムを実行している間に相対インポートを行うことも不可能なので、from .. import parserを実行しても機能しません。

main.pyTGRParserフォルダにtgrフォルダとともに移動することをお勧めします。その時点で、python main.pyを実行するだけで正常に動作するはずです。

+0

アイデア - しかし、私は他のsulutionと一緒に行きます。あなたはPythonパッケージに関する良い資料を教えてくれますか? – kosta5

+0

あなたは確かに歓迎します。しかし、これは実際にPythonパッケージをどのように使用するか設計するかではありません。パッケージをインポートする 'main.py'ファイルは、パッケージ自体の外部に存在する必要があります。 –

+0

こちらをご覧ください:http://docs.python.org/tutorial/modules.html –

関連する問題