2016-12-20 8 views
2

フラスコ/ Pythonデベロッパーの新機能ですが、公開DNSにPowerdns-adminを使用する必要があります。 これはフラスコと私はpowerdns - adminのWebパネルを起動するためにスーパーバイザを使用する必要があります。 私は、ディレクトリや発射フラスコに間違いがないと思います。モジュールフラスコのログイン時にエラーが発生しました

これは私のここ/opt/powerdns-admin/run.py

#!/usr/bin/env python 
from app import app 
from config import PORT 

try: 
     from config import BIND_ADDRESS 
except: 
     BIND_ADDRESS = '127.0.0.1' 

if __name__ == '__main__': 
    app.run(debug = True, host=BIND_ADDRESS, port=PORT) 

は/ opt/PowerDNSに管理者の12最初の行/アプリ/ のinitの.py

from werkzeug.contrib.fixers import ProxyFix 
from flask import Flask, request, session, redirect, url_for 
from flask_login import LoginManager 
from flask_sqlalchemy import SQLAlchemy 

app = Flask(__name__) 
app.config.from_object('config') 
app.wsgi_app = ProxyFix(app.wsgi_app) 

login_manager = LoginManager() 
login_manager.init_app(app) 
db = SQLAlchemy(app) 

そして、これは私の上司の設定

[program:powerdnsadmin] 
command = python /opt/powerdns-admin/run.py 
directory = /opt/powerdns-admin/app 
autostart = true 
autorestart = true 
stdout_logfile=/var/log/supervisor/program_powerdnsadmin.log 
stderr_logfile=/var/log/supervisor/program_powerdnsadmin.error 

しかし、私はsupervisorctl更新Iを行うです

[email protected]:~$ source ./flask/bin/activate 
(flask) [email protected]:~$ python powerdns-admin/run.py 
[INFO] * Running on http://127.0.0.1:8080/ (Press CTRL+C to quit) 

私は手動でrun.pyを起動したとき、それはOKだ、しかしprogram_powerdnsadmin.error

Traceback (most recent call last): 
    File "/opt/powerdns-admin/run.py", line 2, in <module> 
    from app import app 
    File "/opt/powerdns-admin/app/__init__.py", line 3, in <module> 
    from flask_login import LoginManager 
ImportError: No module named flask_login 

にこれを得た。これは、いくつかのバージョンがある:

pip show python 
Name: Python 
Version: 2.7.12 
pip show flask 
Name: Flask 
Version: 0.11.1 
pip show flask_login 
Name: Flask-Login 
Version: 0.3.2 

私は解決策があると思います私はそれから4日以来ブロックされています:(

ありがとう

+0

flask.ext.loginからインポートをインポートするimport LoginManager – Kenyanke

答えて

2

あなたのスーパーバイザ設定では、flask virtualenv Pythonの代わりにシステムPythonが起動しています。

supervisorコマンドでなければなりません:

command = ~/flask/bin/python /opt/powerdns-admin/run.py 

私は~作品は、多分あなたはそれを拡張する必要がある場合はわかりません。

+1

私はあなたのアドバイスとその仕事で私の上司のconfを変更します。 私はその道でシステムのサービスを作ったし、それも仕事です、私はその方法が好きです:) ありがとう –

2

あなたはフラスコアプリケーションに仮想環境を使用しているようです。しかし、あなたのスーパバイザ設定では、あなたのグローバルなPythonインストールでアプリを起動します。

解決策は、すべての必要なパッケージをグローバルPythonバージョンにインストールするか、またはスーパーバイザから仮想環境を起動し、そこでアプリケーションを実行することです。

Flaskアプリが複数ある場合は、後者のほうがはっきりしています。簡単な方法は、以下の内容でごフラスコアプリケーションのdireactory内run.shを作成することです:

#!/bin/bash 
source ./flask/bin/activate 
exec python powerdns-admin/run.py 

$ chmod a+x run.shを経由して、このスクリプトを実行可能にして持つスーパーバイザーの設定ファイルであなたのコマンドの設定を置き換えることを忘れないでくださいこのスクリプトのファイル名。このようにして、スーパーバイザーは仮想環境でFlaskアプリケーションを起動します。

関連する問題