模块烧瓶登录错误
Error on Module Flask Login
我是 flask/python 开发人员的新手,但我需要为我的 public DNS 使用 Powerdns-admin。
这与 flask 一起工作,我需要使用 supervisor 来启动 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 版本,或者您从 supervisor 和 运行 那里启动您的应用程序的虚拟环境。
我更喜欢后者,因为如果你有多个 Flask 应用程序,它会更清晰。一种简单的方法是在 Flask 应用程序的目录中创建一个 run.sh
,内容如下:
#!/bin/bash
source ./flask/bin/activate
exec python powerdns-admin/run.py
不要忘记通过 $ chmod a+x run.sh
使此脚本可执行,并将主管配置文件中的命令设置替换为此脚本的文件名。这样主管将在虚拟环境中启动您的 Flask 应用程序。
您的主管配置正在启动您的系统 Python 而不是 flask
virtualenv Python。
主管命令必须是:
command = ~/flask/bin/python /opt/powerdns-admin/run.py
我不确定 ~
是否有效,也许你需要扩展它。
我是 flask/python 开发人员的新手,但我需要为我的 public DNS 使用 Powerdns-admin。 这与 flask 一起工作,我需要使用 supervisor 来启动 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 版本,或者您从 supervisor 和 运行 那里启动您的应用程序的虚拟环境。
我更喜欢后者,因为如果你有多个 Flask 应用程序,它会更清晰。一种简单的方法是在 Flask 应用程序的目录中创建一个 run.sh
,内容如下:
#!/bin/bash
source ./flask/bin/activate
exec python powerdns-admin/run.py
不要忘记通过 $ chmod a+x run.sh
使此脚本可执行,并将主管配置文件中的命令设置替换为此脚本的文件名。这样主管将在虚拟环境中启动您的 Flask 应用程序。
您的主管配置正在启动您的系统 Python 而不是 flask
virtualenv Python。
主管命令必须是:
command = ~/flask/bin/python /opt/powerdns-admin/run.py
我不确定 ~
是否有效,也许你需要扩展它。