4

このガイドに従って、Google App Engine で実行する Flask アプリを開発しようとしています。レターのガイドに従いましたが、ランチャーから開発アプリ サーバーを起動してhttp://localhost:8080/に移動すると、HTTP 500 エラーが発生します。

ログを確認すると、No module named flask. 次に、管理コンソールでインタラクティブ コンソールを実行して確認するimport flaskと、同じエラー メッセージが表示されます。エラーなしで他のpythonファイルにフラスコをインポートできます。

これを修正する方法はありますか?

4

5 に答える 5

9

GAE と Flask を少し使用して、次のことに気付きました。

Python で直接実行する

Python でアプリを直接実行するには ( python app.py)、次のコマンドを使用して環境に依存パッケージをインストールする必要があります。pip install flask

dev_appserver.py で実行する

GAE SDK によって提供される dev_appserver.py を使用してアプリを実行するには、プロジェクト内にすべての依存パッケージが必要です。 com/a/14248647/1050818

更新しました

Windows で Python、Virtualenv、Flask、GAE を実行する

Python をインストールする

  1. Python をインストールhttp://www.python.org/ftp/python/2.7.2/python-2.7.2.msi
  2. Windowsのスタートボタンをクリックし、「システム環境の編集」で検索して開きます
  3. [詳細] タブに移動し、[環境変数…] ボタンをクリックします。
  4. [環境変数] ウィンドウが開いたら、[システム変数] リストから [パス] を選択し、[編集…] をクリックします。</li>
  5. これを値の最後に追加;C:\Python27;C:\Python27\Scriptsして保存します

setuptools MS Windows インストーラーをインストールします (Windows に PIP をインストールするために必要です)。

  1. このページで正しいインストーラーを選択してくださいhttp://pypi.python.org/pypi/setuptools#files (私はこれを使用しました: http://pypi.python.org/packages/2.7/s/setuptools/setuptools- 0.6c11.win32-py2.7.exe#md5=57e1e64f6b7c7f1d2eddfc9746bbaf20 )
  2. インストーラーをダウンロードしてインストールする

PIP をインストールする

  1. PIP をダウンロードhttp://pypi.python.org/pypi/pip#downloads
  2. 任意のフォルダに解凍します
  3. そのディレクトリから、次のように入力しますpython setup.py install

Virtualenv をインストールする

  1. 実行するpip install virtualenv
  2. これを実行mkdir c:\virtualenvsして、Virtual Envs にフォルダーを作成します。
  3. これを実行しcd c:\virtualenvsてそのフォルダにアクセスします
  4. 実行virtualenv flaskdemoして、プロジェクトの virtualenv を作成します
  5. virtualenv をアクティブにするc:\virtualenvs\flaskdemo\scripts\activate

Google App Engine SDK をインストールする

  1. SDK をインストールしますhttps://developers.google.com/appengine/downloads

プロジェクトを作成する

  1. プロジェクトのディレクトリを作成します
  2. アプリケーションのメインを作成しますhttps://github.com/maxcnunes/flaskgaedemo/blob/master/main.py
  3. Google App Engine のアプリケーションの構成を作成しますhttps://github.com/maxcnunes/flaskgaedemo/blob/master/app.yaml
  4. GAE がアプリケーションを初期化できるようにするファイルを作成しますhttps://github.com/maxcnunes/flaskgaedemo/blob/master/initialize_gae.py

(ここでコードの例を見てください: https://github.com/maxcnunes/flaskgaedemo )

Flask をインストールしてローカルで実行する

  1. 実行するpip install flask

Flask をインストールして GAE で実行する

  1. Flask https://github.com/mitsuhiko/flask/archive/0.9.zipをダウンロードし、プロジェクト内のフォルダーflaskを抽出します
  2. Werkzeug https://github.com/mitsuhiko/werkzeug/archive/0.8.3.zipをダウンロードし、プロジェクト内のフォルダー werkzeug を展開します。
  3. Jinja2 https://github.com/mitsuhiko/jinja2/archive/2.6.zipをダウンロードし、プロジェクト内のフォルダー jinja2 を展開します。
  4. Simple Json https://github.com/simplejson/simplejson/archive/v3.0.5.zipをダウンロードし、プロジェクト内のフォルダー simplejson を抽出します

GAE SDK でアプリケーションを実行する

  1. Google App Engine ランチャーを開く
  2. 新しいアプリケーションを追加
  3. アプリケーションを実行する
  4. [参照] ボタンをクリックして、ブラウザでアプリケーションを開きます
  5. 最後に Deploy ボタンをクリックしてアプリケーションをデプロイします
于 2013-01-10T00:24:18.160 に答える
4

通常、テンプレートにはrequirements.txt. そうでない場合は、そこに依存関係を追加してから実行pip install -t lib -r requirements.txtして、ライブラリを強制的にlibフォルダーに保存します。

まだそこにない場合は、 with に追加libしたことを確認してください。appengine_config.pyvendor.add('lib')

于 2016-09-08T04:40:01.217 に答える
1

私も同じ問題に直面していました.1日過ごした後、フラスコアプリのリファクタリング中に実際に愚かな間違いを発見し、 appengine_config.py別の名前に変更しました.

フォルダーのみにすべての依存関係がある場合、理想的appengine_config.pyには以下のようになりますlib

from google.appengine.ext import vendor

#Add any libraries installed in the "lib" folder.
vendor.add('lib')

また、フォルダーを見つけて実行することができなかったためappengine_config.pylibフォルダーは依存フォルダーとして登録されませんでした。appengine_config.pyサーバーの起動時に実行されているかどうかを確認するには、何かを印刷してみてください。

于 2017-11-17T03:59:16.880 に答える
0

tldr: appengine_config.py を使用し、virtualenv を lib というフォルダーにコピーしてから、dev_appserver.py 経由でアプリを実行していることを確認します。

(以下はubuntuのbash経由です)長い戦いの後、仮想環境とgcloudがうまく機能しないことがわかりました-

仮想環境ディレクトリからすべてをコピーしました

.../.virtualenvs/nimble/local/lib/python2.7/site-packages

の中へ

[projectdir]/lib

そして私の appengine_config.py は最終的にクラウドでのようにローカルで動作しましたが、絶対に実行する必要があります

dev_appserver.py [my proj dir here]

または google.appengine モジュールが読み込まれません。開発サーバーを使用する必要があることを知りませんでした。私はとてもばかげていると感じます。

参考までに、appengine_config.py はこちら

"""`appengine_config` gets loaded when starting a new application instance."""

print 'running app  config yaya!'

from google.appengine.ext import vendor
vendor.add('lib')
print 'I am the line after adding lib, it should have worked'
import os
print os.getcwd()
于 2016-12-24T20:38:15.930 に答える