2

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)
4

1 に答える 1

2

アプリ エンジン アプリケーションに Jinja を含めるには、app.yaml ファイルに次の行を追加します。

libraries:
  - name: jinja2
  version: latest

利用可能なライブラリをさらに含めるためのドキュメント。

ローカル サーバーで使用するには、これらもシステムにインストールする必要があります。UNIX ライクなシステムでは、次のようになります。

sudo easy_install jinja2

追加情報: gae-init と呼ばれるオープン ソースフレームワークがあります。これは、技術スタックを結合し、一連の自動化とアプリ エンジン Web サービスの優れたプラクティスを提供します。一見の価値があるかもしれません。

于 2013-04-01T20:58:11.380 に答える