Docker部署Flask应用出现flask_debugtoolbar模块缺失报错求助
问题:Docker中Flask应用运行正常,但本地执行pytest时提示flask_debugtoolbar模块找不到
我在Docker中运行一个基础Flask应用,执行docker-compose up --build无报错,requirements.txt中的依赖似乎已全部下载。但在本地执行命令:
$ py.test flowstate/tests
时触发报错,回溯信息如下:
ImportError while loading conftest '/Users/Jaime/python/flask/flowstate-api/flowstate/tests/conftest.py'. flowstate/tests/conftest.py:3: in from flowstate.app import create_app flowstate/app.py:5: in from flowstate.extensions import ( flowstate/extensions.py:1: in from flask_debugtoolbar import DebugToolbarExtension E ModuleNotFoundError: No module named 'flask_debugtoolbar'
相关文件内容
app.py
from flask import Flask from flowstate.blueprints.page import page from flowstate.extensions import ( debug_toolbar, db, jwt, marshmallow ) def create_app(settings_override=None): """ Create a Flask app using the factory pattern. """ app = Flask(__name__, instance_relative_config=True) app.config.from_object('config.settings') app.config.from_pyfile('settings.py', silent=True) if settings_override: app.config.update(settings_override) app.register_blueprint(page) extensions(app) return app def extensions(app): """ Mutate the app passed in. """ debug_toolbar.init_app(app) jwt.init_app(app) db.init_app(app) marshmallow.init_app(app) return None
extensions.py
from flask_debugtoolbar import DebugToolbarExtension from flask_jwt_extended import JWTManager from flask_sqlalchemy import SQLAlchemy from flask_marshmallow import Marshmallow debug_toolbar = DebugToolbarExtension() jwt = JWTManager() db = SQLAlchemy() marshmallow = Marshmallow()
requirements.txt
# Python web app microframework Flask==0.12 # Flask dependencies itsdangerous==1.1.0 markupsafe==1.1.1 # WSGI HTTP server gunicorn==19.4 # WSGI app library werkzeug==0.15.5 # HTML templating library for Flask jinja2==2.11.3 # Relational databases w/ Python SQLAlchemy==1.2.0 SQLAlchemy-Utils==0.32 # Integrate relational databases into app Flask-SQLAlchemy==2.1 # PostgreSQL database adapter in C psycopg2==2.8.3 # API / JWT Auth flask-classful==0.14 flask-marshmallow==0.14.0 marshmallow==3.0.0 marshmallow-sqlalchemy==0.27.0 flask-jwt-extended==3.3 PyJWT==1.7.1 # Testing pytest==2.9 # CLI command handling Click==6.4 # Extensions flask-debugtoolbar==0.13.1 faker==0.8.7 # Environmental variables python-dotenv==0.20.0
解决方法
- 安装本地环境依赖:Docker的依赖环境和本地是隔离的,你需要在本地环境执行
pip install -r requirements.txt,确保所有依赖都安装完成。 - 确认Python环境一致性:检查当前使用的Python环境是否和开发环境匹配,比如是否激活了正确的虚拟环境。执行
which python和which pip查看当前环境路径,切换到正确环境后重新安装依赖。 - 验证依赖是否安装成功:执行
pip list查看已安装包,确认flask-debugtoolbar存在且版本和requirements.txt一致。如果缺失,手动执行pip install flask-debugtoolbar==0.13.1安装指定版本。 - 测试环境可选优化:如果测试不需要调试工具栏,可以修改代码实现条件导入,避免测试环境依赖。修改
extensions.py:
然后修改try: from flask_debugtoolbar import DebugToolbarExtension debug_toolbar = DebugToolbarExtension() except ImportError: debug_toolbar = Noneapp.py中的extensions函数:def extensions(app): if debug_toolbar is not None: debug_toolbar.init_app(app) jwt.init_app(app) db.init_app(app) marshmallow.init_app(app) return None
内容的提问来源于stack exchange,提问作者jaimeiuis
相关产品推荐
相关产品推荐

