web-dev-qa-db-ja.com

Flask間違ったPython

Gunicornサーバーでbootstrap a Flask appを実行しようとしています。2つのツールのドキュメントをまとめて、SOを検索することで、これが実現します。私はこれまでに持っています...しかし、それは完全には機能していません。

app.py

from flask import Flask, render_template
from flask.ext.sqlalchemy import SQLAlchemy
from werkzeug.contrib.fixers import ProxyFix

app = Flask(__name__)
app.wsgi_app = ProxyFix(app.wsgi_app)
db = SQLAlchemy(app)

@app.route('/')
def index():
    return render_template('index.html')

私が実行したもの

App.pyと同じディレクトリから、

gunicorn app:app

この小さなことから始めても、私は何かを逃しました。エラーメッセージはあまり役に立ちません:

2013-09-12 20:13:07 [11461] [情報] gunicorn0.14.5を開始しています
2013-09-12 20:13:07 [11461] [情報]リスニング:http://127.0.0.1:8000(11461)
2013-09-12 20:13:07 [11461] [情報]ワーカーの使用:同期
2013-09-12 20:13:07 [11528] [INFO] pidでワーカーを起動しています:11528
2013-09-12 20:13:07 [11528] [情報]ワーカーが終了します(pid:11528)
2013-09-12 20:13:08 [11461] [情報]シャットダウン:マスター
2013-09-12 20:13:08 [11461] [情報]理由:ワーカーが起動に失敗しました。

ちなみに、私はこれをDebianLinuxシステムで実行しています。よろしくお願いします!

更新

デバッグをオンにした後、さらに有益なエラーメッセージが表示されました。これは非常に急速に非常に具体的な問題になりました:ImportError: No module named flask。通常、virtualenvを使用していないときにこの種のエラーが発生しますが、使用しています。よく調べてみると、Gunicornはvirtualenvが使用しているものとは異なるバージョンのPython、つまりPython3を使用しているようです。だから...私の特定のpythonこれを修正し、Gunicornに適切なPythonを使用するように指示するにはどうすればよいですか?

18
Brian Peterson

Gunicornユーティリティがvirtualenvではなくシステムパスを使い果たしている可能性があります。

必ずpip install gunicornvirtualenvに。

これが、アプリを実行するためにセットアップしたvirtualenvのpipフリーズです。

(so_2)20:38:25 ~/code/tmp/flask_so$ pip freeze
Flask==0.10.1
Flask-SQLAlchemy==1.0
Jinja2==2.7.1
MarkupSafe==0.18
SQLAlchemy==0.8.2
Werkzeug==0.9.4
gunicorn==18.0
itsdangerous==0.23
wsgiref==0.1.2

実際には、私はこれらを実行しただけですpip installs:

$ pip install flask
$ pip install gunicorn
$ pip install Flask-SQLAlchemy
21
Kyle Kelley

私はあなたと同じ問題を抱えています。問題は、gunicornが何らかの理由で仮想環境の外部に環境をロードすることです。仮想環境の外でパッケージgunicornをアンインストールすることで解決しました。

(env) $ deactivate
$ Sudo pip uninstall gunicorn

だからあなたはあなたの環境に戻って実行しようとします。私の場合、envフォルダーと入力しました。

$ source env/bin/activate
(env) $ pip install gunicorn
(env) $ gunicorn server:app
2013-10-19 20:40:56 [11923] [INFO] Starting gunicorn 18.0
2013-10-19 20:40:56 [11923] [INFO] Listening at: http://127.0.0.1:8000 (11923)
2013-10-19 20:40:56 [11923] [INFO] Using worker: sync
2013-10-19 20:40:56 [11926] [INFO] Booting worker with pid: 11926
16
Joepreludian

Gunicornは、システムの複数の場所にインストールされている可能性があります。それはに存在する可能性があります

  1. OSのデフォルトPythonパス
  2. Anaconda Pythonパス

デフォルトで指定すると

gunicorn -w 4 -b 127.0.0.1:5000flaskApp:app

オペレーティングシステムのデフォルトを参照していますPython同じパスにflaskパッケージがインストールされていない場合、エラーが発生します。参照するgunicornを指定して、 gunicornへの適切なパス

/ home/sunil/anaconda2/bin/gunicorn -w 4 -b 127.0.0.1:5000flaskApp:app

6
Patel Sunil