2013-05-10 3 views
8

この質問は何度か尋ねられていますが、それらを読み、推奨された修正を行った後、私はまだ困惑しています。次のようにインポートエラーが発生しました:モジュール名は***ですが、__init__.pyがあります

マイプロジェクト構造は次のとおりです。

Project 
     | 
     src 
     | 
     root - has __init__.py 
      | 
      nested - has __init__.py 
        | 
        tests - has __init__.py 
        | 
        utilities - has __init__.py 
        | 
        services - has __init__.py 

私が正常に何の問題もなくのEclipseからunittestの回帰クラスを実行しました。あなたのよう

ImportError: No module named 'root' 

:できるだけ早く私は、コマンドライン(スイートを実行される他のユーザーがEclipseにアクセス権を持っていないとして)私はエラーが表示されるから、同じクラスを実行しようとして

上から見ると、モジュールのルートは__init__.py すべて__init__.pyモジュールは完全に空です。

お寄せいただきありがとうございます。

+1

(あなたが~上にあるときにpwdを入力すると、あなたがそれを問い合わせることができます)明示的なパス名で~を置き換えた 'あなた'のsys.pathにsrc'です'?そのディレクトリでPythonコマンドを実行しているか、 'sys.path'(または' PYTHONPATH'環境変数)に 'src'を明示的に追加していますか? –

+0

@Martijin: '.. \ testsディレクトリ内から実行しようとしています。' 'scr'は 'sys.path'や 'PYTHONPATH'に追加されません。私はそれが必要であることを知らなかった、これはコマンドラインを介して実行しようとするのは初めてです。私は 'PYTHONPATH'にディレクトリを追加しようとします –

+4

パスに追加することはお勧めしません。実際にPythonプロジェクトを作成することを意味する '' setup.py''をセットアップする方法を学ぶことをお勧めします。それは長期的にあなたを助けます。 – CppLearner

答えて

11

インポートリストにsys.path.appendを追加してみてください。 GusのEは受け入れ答えに示し、さらにいくつかの経験を私が見つけたものを使用してこの問題に到着した人のため

import sys 
sys.path.append("/Project/src/") 
import root 
import root.nested.tests 
+0

ありがとう、正確に何が必要だった。 –

+0

これを試してみると 'NameError:name 'sys'が定義されていません。 – CGFoX

+2

@CGFoXあなたはまずsysをインポートする必要があります。答えは –

7

ただ、ノート、私はから私のプログラムを実行できることを確認するために非常に有用であることが、次の私のマシン上のコマンドラインや別の同僚のコマンドラインは、必要が生じた場合に起こります。

import sys 
import os 
sys.path.append(os.path.join(os.path.dirname(__file__), "..", "..")) 

私は「ネストされた」ディレクトリにあります「メイン」メソッドを実行すると、それはないでしょう以下のすべての輸入を意味する「SRC」ディレクトリは、実行時にPYTHONPATHに追加されることを保証しますエラーを投げる。

明らかに、あなたは誰がここに着地した場合、あなたの主な方法が

+0

を反映して修正されました。ありがとうございました! –

0

から実行された場合の、プログラム内の位置によって決定されるos.path.join()方法に「..」の引数の数を調整する必要があります。

このエラーも発生しました。私の場合、私はpath.sys.append(...)~/my/path/を使用し、修正が

関連する問題