[英]Error on Module Flask Login
我是flask / python開發人員的新手,但我需要對公共DNS使用Powerdns-admin。 與flask一起使用時,我需要使用超級用戶來啟動powerdns-admin的Web面板。 我認為我在目錄或啟動flask時沒有犯錯。
這是我的/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-admin / app / init .py的前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更新時,我在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
但是,當我手動啟動run.py時,就可以了
infra@nameserver:~$ source ./flask/bin/activate
(flask) infra@nameserver:~$ 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天了:(
謝謝
您似乎為Flask應用程序使用了虛擬環境。 但是,在您的主管配置中,您需要使用全局python安裝程序來啟動應用程序。
一種解決方案是將所有必需的軟件包安裝到全局Python版本,或者從超級用戶啟動虛擬環境並在那里運行應用程序。
我更喜歡后者,因為如果您有多個Flask應用程序,它會更清晰。 一種簡單的方法是在Flask應用程序的目錄中創建具有以下內容的run.sh
:
#!/bin/bash
source ./flask/bin/activate
exec python powerdns-admin/run.py
不要忘記通過$ chmod a+x run.sh
使該腳本可執行,並用該腳本的文件名替換$ chmod a+x run.sh
配置文件中的命令設置。 主管將通過這種方式在虛擬環境中啟動Flask應用程序。
您的主管配置正在啟動系統Python,而不是flask
virtualenv Python。
主管命令必須是:
command = ~/flask/bin/python /opt/powerdns-admin/run.py
我不確定~
有效,也許您必須擴展它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.