Flask を使用して Google App Engine プロジェクトに取り組んでいます。Flask は Jinja2 を使用しています。Flask とそれに必要なすべてのモジュールをプロジェクトのルート フォルダーに配置すると、サーバーは問題なく起動しました。ただし、ディレクトリを少しクリーンアップしたかったので、Flask とその他のモジュール (Jinja2 を含む) を「lib」というサブディレクトリに移動しました。したがって、私のプロジェクトは次のようになります。
app.yaml
main.py
myapp
__init__.py
view.py
blahblah.py
lib
flask
jinja2
OtherModules
次に、アプリの main.py ファイルで、 を使用してディレクトリを追加しsys.path.insert(0, 'lib')
ます。Flask はこの方法を使用して正常にインポートされているようですが、Flask は lib フォルダー内の両方で Jinja2 を見つけることができないようです。実行中の dev_appserver テストでビューにアクセスしようとすると、次のようになります。
File "lib/flask/__init__.py", line 19, in <module>
from jinja2 import Markup, escape
ImportError: No module named jinja2
Flask が Jinja2 を見つけられるように (そして他のモジュールがその要件を見つけられるように)、それらを lib ディレクトリに保持し、モジュールを編集してパスを調整する必要がないようにするにはどうすればよいですか?
以下は、何か知っておくと役立つ場合に備えて、私の main.py ファイルです。
import sys
sys.path.insert(0, 'lib')
from google.appengine.ext.webapp.util import run_wsgi_app
from myapp import app
run_wsgi_app(app)