2017-01-31 3 views
0

私はFlaskアプリケーションで作業していますが、テストファイルを実行しようとしていますが、実行できません。私の現在のアプリケーション構造は次のとおりです。ディレクトリ外からインポートしようとしたときModuleNotFoundError

Project 
── app 
│   ├── __init__.py 
│   ├── forms.py 
│   ├── model.py 
│   ├── models.py 
│   ├── static 
│   │   ├── css 
│   │   ├── fonts 
│   │   ├── img 
│   │   ├── js 
│   │   └── uploads 
│   ├── templates 
│   │   ├── client 
│   │   │   ├── client-base.html 
│   │   │   ├── client-inventory.html 
│   │   │   ├── client-login.html 
│   │   │   ├── client-macros.html 
│   │   │   ├── client-main.html 
│   │   │   └── client-signup.html 
│   │   └── user 
│   │    ├── user-base.html 
│   │    ├── user-macros.html 
│   │    └── user-main.html 
│   └── views 
│    ├── __init__.py 
│    ├── client.py 
│    └── user.py 
├── config.py 
├── run.py 
└── tests 
    └── test_user_model.py 

私はそれがModuleNotFoundError: No module named 'app'を提起from app.models import Usertest_user_model.pyで実行しようとします。あなたのPYTHONPATHappを追加する必要があります(from ..app import modelsは、スコープ外import appであり、同様の輸入も動作しません。)

+1

これはどのフォルダから実行していますか? – Suever

答えて

3

testsディレクトリに__init__.pyを追加する必要があります。空の__init__.pyはそのディレクトリをパッケージに変換します。次に、あなたのtest_user_model.pyにこのラインを使用することができます。

from app.models import User 

PEP 328で詳細を参照してください。

+0

あなたはそのimportステートメントを "使用する"ことと、 '__init __。py'がどのように動作するのかを明確にしてください。 – colllin

+0

@colllin遅れて申し訳ありません。 –

0

を私はimport文無数の異なる方法を編集しようとしましたが、それはまだすべてのケースでエラーが発生します

+0

本当ですか?ディレクトリ外からのモジュールのインポートはそれほど難しくはありませんが、私はこれまで、 'PYTHONPATH'を編集することなく、'公式フラスコの練習アプリケーション(https://github.com) /pallets/flask/blob/master/examples/flaskr/tests/test_flaskr.py)テストでは 'flaskr import flaskr'を呼び出してアプリケーションをインポートします –

+0

モジュールをPythonパスに追加するには、環境変数をエクスポートするか、コード内でそれを行います。 – saloua

+0

しかし、他のプロジェクトが問題なく別のディレクトリからモジュールをインポートできるようになったときに、なぜPythonパスを変更する必要があるのか​​混乱していますか? –

関連する問題