簡體   English   中英

模塊燒瓶登錄錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM