2016-12-20 4 views
2

플라스크/파이썬 개발사에서 새로 왔지만 공용 DNS에 Powerdns-admin을 사용해야합니다. 플라스크와 함께 작동하며 superdvisor를 사용하여 powerdns-admin의 웹 패널을 시작해야합니다. 디렉토리 또는 발사 플라스크에서 실수를 거의 저질렀다고 생각합니다.모듈 플라스크 로그인 오류

이 내 여기 /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) 

/옵션/powerdns-관리자의 12 첫 선/응용 프로그램/초기화

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 업데이트 전을 수행 할 때 나는 run.py을 시작할 때

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 

그러나 program_powerdnsadmin.error에있어, 수동으로 괜찮아요

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

이 몇 버전입니다 :

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을 시작합니다.

감독자 명령은 다음과 같아야합니다

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

나는 ~ 작품, 어쩌면 당신이 그것을 확장 할 필요가 있는지 확실하지 않습니다.

+1

조언과 작업으로 관리자 감독자를 변경합니다. 그래서 나는 그 길로 시스템 서비스를 만들었고 그것도 효과가 있습니다. 나는 그 방법을 선호합니다 :) –

2

플라스크 응용 프로그램에 가상 환경을 사용하는 것 같습니다. 그러나 관리자 설정에서 전역 파이썬 설치로 앱을 시작하십시오.

해결 방법은 필요한 모든 패키지를 글로벌 Python 버전에 설치하거나 관리자가 가상 ​​환경을 시작하고 거기에서 응용 프로그램을 실행하는 것입니다.

플라스크 응용 프로그램이 여러 개있는 경우 더 명확하므로 후자를 선호합니다. 쉬운 방법은 다음과 같은 내용으로하여 플라스크 응용 프로그램의 direactory 내 run.sh를 만드는 것입니다 :

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

$ chmod a+x run.sh를 통해이 스크립트의 실행을하고와 관리자의 설정 파일에 명령 설정을 대체하는 것을 잊지 마세요 이 스크립트의 파일 이름. 이 방법으로 관리자는 가상 환경에서 Flask 응용 프로그램을 시작합니다.