无法从flask-security-too导入login_user的问题排查求助
无法从Flask-Security-Too导入login_user函数的问题
我尝试从flask-security-too包中使用login_user函数,但始终无法成功导入。查看官方文档后确认该函数并未被弃用。
我尝试了多种导入组合,均失败:
>>> import flask_security >>> from flask_security.utils import login_user Traceback (most recent call last): File "<stdin>", line 1, in <module> ModuleNotFoundError: No module named 'flask_security.utils' >>> from flask_security import login_user Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: cannot import name 'login_user' from 'flask_security' (unknown location) >>> from flask_security import utils Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: cannot import name 'utils' from 'flask_security' (unknown location) >>> flask_security.login_user Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: module 'flask_security' has no attribute 'login_user'
以下是我的pip包列表:
Package Version ------------------- ------------ Babel 2.13.1 bcrypt 4.0.1 blinker 1.6.3 boto3 1.28.75 botocore 1.31.75 cffi 1.16.0 click 8.1.7 cryptography 41.0.5 dnspython 2.4.2 email-validator 2.1.0.post1 Flask 3.0.0 Flask-Assets 2.1.0 flask-babel 4.0.0 Flask-BabelEx 0.9.4 Flask-Login 0.6.3 Flask-Mail 0.9.1 Flask-MDE 1.2.1 Flask-Principal 0.4.0 Flask-Security-Too 5.3.2 Flask-SQLAlchemy 3.1.1 Flask-Table 0.5.0 Flask-WTF 1.2.1 greenlet 3.0.1 gunicorn 21.2.0 idna 3.4 importlib-metadata 6.8.0 importlib-resources 6.1.0 itsdangerous 2.1.2 Jinja2 3.1.2 jmespath 1.0.1 markup 0.2 MarkupSafe 2.1.3 numpy 1.26.1 packaging 23.2 pandas 2.1.2 paramiko 3.3.1 passlib 1.7.4 pip 23.3.1 psycopg2-binary 2.9.9 pycparser 2.21 PyNaCl 1.5.0 python-dateutil 2.8.2 python-decouple 3.8 python-dotenv 1.0.0 pytz 2023.3.post1 s3transfer 0.7.0 setuptools 53.0.0 six 1.16.0 speaklater 1.3 SQLAlchemy 2.0.22 sqlalchemy-json 0.7.0 typing_extensions 4.8.0 tzdata 2023.3 urllib3 1.26.18 webassets 2.0 Werkzeug 3.0.1 WTForms 3.1.1 zipp 3.17.0
我确定之前直接用from flask_security import login_user就能成功导入,想知道是不是忽略了什么明显问题,或者相关内容有变更?
补充调试信息
NameError: name 'flask_security' is not defined >>> import flask_security >>> print(flask_security.__file__) None >>> print(dir(flask_security)) ['__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__']
>>> print(flask_security.__path__) _NamespacePath(['/home/datman/flask_venv/lib64/python3.9/site-packages/flask_security', '/home/datman/flask_venv/lib/python3.9/site-packages/flask_security'])
✗ pip show Flask-Security-Too Name: Flask-Security-Too Version: 5.3.2 Summary: Quickly add security features to your Flask application. Home-page: Author: Matt Wright Author-email: Chris Wagner <jwag.wagner+github@gmail.com> License: Location: /home/datman/flask_venv/lib/python3.9/site-packages Requires: email-validator, Flask, Flask-Login, Flask-Principal, Flask-WTF, importlib-resources, markupsafe, passlib, wtforms Required-by:
排查与解决
- 在全新虚拟环境中仅安装Flask-Security-Too,可正常导入
login_user - 重新安装所有包后问题解决,推测原因是最初通过requirements.txt安装时出现版本冲突,且手动卸载flask-security替换为flask-security-too后,pip未自动检测并解决依赖问题。
内容的提问来源于stack exchange,提问作者Logos Masters
相关产品推荐
相关产品推荐

