首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
Flask项目启动总报错?这10个常见坑我帮你踩过了
📅 2026/10/30 2:34:51
✍️ 爱科研究院
👁 阅读 3,247
⚠️免责声明本文项目仅供技术学习参考严禁直接作为毕业设计或课程作业提交。请结合自身需求进行二次开发与创新学术诚信从我做起 直接说怎么跑起来很多同学代码写得还行一到环境搭建就懵——Python版本不对、依赖装不上、启动报错、数据库连不上。拢共就四步先装Python再给项目整个虚拟环境pip装依赖最后flask run。听着没几步每一步我都栽过。但每一步都有坑。流程我按自己踩过的顺序重排了一遍跟着敲正常十来分钟能跑起来——慢也就慢在下载依赖那步。一、环境准备清单先把需要的工具列出来一个一个装好工具版本要求用途Python3.8 ~ 3.12运行环境pip最新版Python包管理MySQL可选5.7 / 8.0数据库SQLite可选跳过编辑器VS Code / PyCharm写代码浏览器Chrome / Edge测页面为什么Python 3.8 ~ 3.12低于3.8很多新特性用不了高于3.12有些第三方库还没兼容。中间版本最稳。毕设推荐 3.10 或 3.11。二、Windows 下 Python 安装1. 下载去 Python 官网下载https://www.python.org/downloads/选 Windows installer (64-bit)下载 .exe 安装包。2. 安装注意第一步最关键勾选Add Python to PATH。这个不勾后面命令行输python找不到90% 的新手都栽在这一步。然后点Install Now默认安装就行。3. 验证安装成功打开 CMDWin R输 cmd回车输入python --version能输出版本号就是装好了。如果提示 “‘python’ 不是内部或外部命令”说明PATH没配好回去重新勾上或者手动加环境变量。三、虚拟环境隔离项目依赖为什么要用虚拟环境因为不同项目依赖的库版本不一样——A项目用 Flask 2.xB项目用 Flask 1.x混在一起会打架。虚拟环境让每个项目有自己独立的依赖包互不干扰。创建虚拟环境打开 CMD进到项目目录cd D:\myd_shop python -m venv venv这行会在项目目录下创建一个venv文件夹里面就是这个项目的独立 Python 环境。激活虚拟环境venv\Scripts\activate激活成功后命令行前面会出现(venv)的标识。退出虚拟环境deactivateMac / Linux 用户cd/your/project/path python3-mvenv venvsourcevenv/bin/activate四、安装项目依赖项目根目录下应该有个requirements.txt列出了所有依赖包Flask3.0.0 Flask-SQLAlchemy3.1.1 Flask-Login0.6.3 Flask-WTF1.2.1 Werkzeug3.0.1 PyMySQL1.1.0 Pillow10.1.0 captcha0.4一键安装pip install -r requirements.txt依赖安装常见坑坑1下载太慢超时用国内镜像源加速pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple常用的国内镜像清华https://pypi.tuna.tsinghua.edu.cn/simple阿里云https://mirrors.aliyun.com/pypi/simple/中科大https://pypi.mirrors.ustc.edu.cn/simple/坑2提示 “Microsoft Visual C 14.0 is required”有些包比如 Pillow、cryptography需要编译环境。解决方法去微软官网下载 “Build Tools for Visual Studio”安装时勾选 “C 生成工具”。或者直接下载对应包的 whl 文件手动安装。坑3版本冲突如果报 “ERROR: Cannot install … because these package versions have conflicting dependencies”那就是依赖版本冲突了。解决方法先看冲突的是哪两个包然后调整requirements.txt里的版本号找到都兼容的版本。坑4pip 版本太低先升级 pippython -m pip install --upgrade pip然后再装依赖。五、数据库配置毕设推荐两种方案选一个就行方案ASQLite最简单零配置SQLite 是文件数据库不需要装服务一个文件就是整个数据库。毕设演示完全够用。配置# config.pyimportos BASE_DIRos.path.abspath(os.path.dirname(__file__))classConfig:SECRET_KEYyour-secret-key-here-change-itSQLALCHEMY_DATABASE_URIsqlite:///os.path.join(BASE_DIR,myd_shop.db)SQLALCHEMY_TRACK_MODIFICATIONSFalse优点不用装数据库软件项目复制到哪都能跑缺点并发差毕设不影响功能比 MySQL 少方案BMySQL正式一点如果答辩老师要求用 MySQL就用这个。先装 MySQL推荐 MySQL 8.0装完创建数据库CREATEDATABASEmyd_shopDEFAULTCHARACTERSETutf8mb4COLLATEutf8mb4_general_ci;配置classConfig:SECRET_KEYyour-secret-key-hereSQLALCHEMY_DATABASE_URImysqlpymysql://root:你的密码localhost:3306/myd_shop?charsetutf8mb4SQLALCHEMY_TRACK_MODIFICATIONSFalseMySQL 常见坑坑1连接不上报 Access denied检查用户名密码对不对、MySQL 服务有没有启动。Windows 下可以在服务里看 MySQL 服务状态。坑2报 2003 Can’t connect to MySQL serverMySQL 没启动。去服务里启动 MySQL或者命令行net start mysql80。坑3报 “Unknown charset ‘utf8mb4’”MySQL 版本太低了5.5.3 以上才支持 utf8mb4。升级 MySQL或者把 charset 改成 utf8。坑4中文乱码确保数据库、表、连接都是 utf8mb4。连接串里加上?charsetutf8mb4。六、初始化数据库表第一次跑项目数据库里是空的需要建表。方式1直接执行建表 SQL把第一篇里的建表 SQL 全部复制到 Navicat 或 phpMyAdmin 里执行。方式2用 Flask-Migrate 自动迁移更专业的做法用flask db命令自动生成和执行迁移。# app.py 里初始化fromflask_migrateimportMigratefrommodelsimportdb migrateMigrate(app,db)然后命令行执行flask db init # 初始化迁移目录第一次才需要 flask db migrate -m init # 生成迁移文件 flask db upgrade # 执行迁移建表以后加字段、改表结构就再跑flask db migrate和flask db upgrade。答辩时我提了句用的Flask-Migrate做迁移老师果然多问了两句表结构怎么改的——这个词值几分印象分。方式3代码里直接 create_all最简单粗暴# app.py 最后加withapp.app_context():db.create_all()应用启动时自动建表。缺点是改表结构的时候不会自动更新适合项目初期快速跑起来。七、创建管理员账号后台管理需要一个管理员账号写个初始化脚本# init_admin.pyfromappimportapp,dbfrommodelsimportAdminfromwerkzeug.securityimportgenerate_password_hashwithapp.app_context():# 检查是否已有管理员ifAdmin.query.filter_by(usernameadmin).first():print(管理员已存在)else:adminAdmin(usernameadmin,passwordgenerate_password_hash(admin123),rolesuper)db.session.add(admin)db.session.commit()print(管理员创建成功admin / admin123)运行python init_admin.py毕设演示的时候管理员账号密码简单点就行——admin / admin123记起来方便。八、启动项目开发模式启动set FLASK_APPapp.py set FLASK_DEBUGTrue flask runMac / LinuxexportFLASK_APPapp.pyexportFLASK_DEBUGTrue flask run或者直接在app.py底部写if__name____main__:app.run(debugTrue,host0.0.0.0,port5000)然后直接python app.py就行。host0.0.0.0的意思是允许局域网访问——答辩的时候老师想用他自己的电脑访问你的项目用这个就能通过你的IP访问。访问地址打开浏览器输入前台首页http://127.0.0.1:5000/后台管理http://127.0.0.1:5000/admin/login九、常见启动报错排查报错1ModuleNotFoundError: No module named flask原因没装依赖或者没激活虚拟环境。解决先激活虚拟环境venv\Scripts\activate再pip install -r requirements.txt。报错2ImportError: cannot import name secure_filename from werkzeug.utils原因Werkzeug 版本太新secure_filename移到了werkzeug.utils下面的别的位置其实新版本还在 utils 里这个一般是版本不兼容。解决降低 Werkzeug 版本pip install werkzeug2.3.7或者按 Flask 版本对应的 Werkzeug 版本装。报错3sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: user原因数据库里没有表还没初始化。解决执行建表 SQL 或者跑db.create_all()。报错4Address already in use原因5000 端口被占用了——可能上一个 Flask 进程没关掉。解决Windowsnetstat -ano | findstr :5000找到 PID然后taskkill /F /PID 进程号Mac/Linuxlsof -i :5000找到 PIDkill -9 进程号或者换个端口flask run --port 5001报错5OSError: [WinError 10013]以一种访问权限不允许的方式做了一个访问套接字的尝试原因端口被系统占用或权限不够。解决换个端口比如 8000、8080。报错6jinja2.exceptions.TemplateNotFound原因模板文件找不到——路径错了或者文件名不对。解决确认 templates 文件夹在正确的位置app.py 同级目录模板路径写对了。报错7图片上传不了 / 上传后不显示原因上传目录不存在 / 路径配置错了 / 静态文件路由没配置。解决确保static/uploads/goods/目录存在Flask 自动服务 static 目录下的文件路径应该是/static/uploads/goods/xxx.jpg检查 Nginx 或开发服务器的静态文件配置十、毕设演示小贴士1. 准备几个测试账号提前注册几个普通用户账号每个账号里放几个订单、购物车里加点东西演示的时候直接看不用现场注册。2. 准备管理员登录入口后台地址别藏太深演示的时候好找。可以在前台页脚放个管理后台的链接。3. 数据别太空数据库里多塞点测试数据——十几个商品、几个分类、几轮播图、几个订单。页面看起来饱满老师第一印象好。4. 用 PyCharm 演示加分能在 PyCharm 里跑起来随时能打开代码给老师看比单纯打开网页效果好得多。5. 固定启动步骤写成脚本写个run.batWindows或run.shMac一键启动演示的时候不用手敲命令echo off call venv\Scripts\activate set FLASK_APPapp.py set FLASK_DEBUGTrue python app.py pause双击就启动多省事。启动报错相关答辩会问什么1. 为什么要用虚拟环境答虚拟环境可以为每个项目创建独立的Python依赖环境避免不同项目之间包版本冲突。比如A项目用Flask 2.xB项目用Flask 3.x放在同一个全局环境里就会冲突。2. requirements.txt 是干嘛的怎么生成答requirements.txt 是项目依赖清单列出了所有需要安装的Python包及其版本。别人拿到项目后pip install -r requirements.txt就能一键安装所有依赖。生成命令是pip freeze requirements.txt。3. Flask 的 debug 模式有什么用为什么生产环境不能开答开发时开着确实方便改完代码自动重启报错页还能直接看详细堆栈。但线上必须关掉debug——你想啊那个交互式调试器谁都能在上面敲Python代码等于把服务器钥匙挂网上了。4. 为什么数据库连接用配置文件不直接写死在代码里答配置和代码分离是最佳实践——开发环境、测试环境、生产环境的数据库地址、密码都不一样用配置文件可以根据环境切换不用改代码。密码等敏感信息也不应该提交到代码仓库里。5. 数据库迁移工具有什么用答数据库迁移工具如 Flask-Migrate / Alembic可以追踪数据库表结构的变化生成迁移脚本支持升级和回滚。项目迭代过程中表结构会不断变化加字段、改类型用迁移工具可以有序地管理这些变化也方便在不同环境之间同步表结构。环境搭建挺邪门会的人闭着眼装完不会的人光一个PATH就能卡半天我当初就卡过。其实就那么几个固定的坑踩过一次就记住了。上面这些我挨个踩过照着走基本能起得来真卡住了回第九节对着报错表对号入座就行。梅雅达编程笔记原创 · 首发 CSDN · 转载请注明出处
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/10/30 2:34:51
2–5 人技术团队办公室怎么选?从共享工位到独立办公室的成本测算与决策指南(天津 2026 实测)
2026/10/30 2:29:51
FunASR安装
2026/10/30 2:29:51
8、【MOD开发】【骑砍2】跨平台MOD构建环境(八)/:游戏根 bin 与模块 bin——运行程序集的两种归属
2026/10/30 4:40:00
AI Agent 失控防护:用硬件看门狗芯片实现独立监护
2026/10/30 4:40:00
30 秒找到 BongoCat 配置文件:三大系统路径速查表
2026/10/30 4:40:00
80 类砍到 5 类:Darknet 自定义检测类别与权重调优完整指南
2026/10/30 4:40:00
VUE框架学习(2:项目目录结构)
2026/10/30 4:40:00
2.java变量
2026/10/30 4:34:59
告别转换会员!两段 Python 代码实现 PDF↔Word 双向转换,实测可用
2026/10/30 0:03:44
OpenShell 完全定制指南:从安装到深度配置,打造高效 Windows 开始菜单
2026/10/30 0:03:44
Superpowers技能体系全解析:从Skills引入到安装的完整指南
2026/10/30 0:03:44
TensorFlow实现Weibull生存模型预测债券违约概率
2026/10/29 21:03:42
全国计算机二级C语言真题PDF高效刷题指南
2026/10/29 21:03:35
requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南
2026/10/29 21:03:28
递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现
2026/10/30 3:44:27
我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
2026/10/30 3:44:25
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026/10/30 3:44:29
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)