
别盲目相信 AI 给你生成的 requirements.txt 。 它看起来像是帮你总结好了所有依赖,实际上准确率堪忧,经常会出现版本对不上、根本不存在的库,或者和你的 Python 版本完全不兼容。亲身实测,这玩意充其量是一个参考,而不是可以直接用在生产环境的配置文件。这是踩过坑之后换来的血的经验。
今天原本只是一次简单的部署更新,没想到硬生生搞成了一次完整的实战修炼。
项目是一个前后端分离的智能稽核平台,前端基于 Vue3,后端是 Python Flask + OpenAI API。目标很简单:把本地开发好的代码部署到服务器上,让前端能正常调用后端 API。
听起来是不是很简单?对,听起来。
部署完成,前端一打开页面,所有的 API 请求直接扑街:
500 Internal Server Error但是,很诡异——访问后端的图片是正常的。
这一下直接说明了一个事实:
static/ 文件夹在工作)。我瞬间明白,这绝对不是端口、防火墙或者前后端没连通的问题。因为图片是从后端接口直接返回的,说明网络是通的、Nginx(如果有的话)是通的,CORS 也是通的。
🔥 问题的本质一定在 Flask 的动态路由服务启动失败。
原来服务器默认 Python 是 3.7.9。
我看着 requirements.txt 里的 Flask==2.3.3,瞬间明白了。
✅ Flask 2.2 开始,最低支持 Python 3.8。 —— 这个是 AI 自动生成的,它也想不到,还有低于 3.8 的环境的吧??
直接装不上,pip 一顿狂报错:
ERROR: No matching distribution found for Flask==2.3.3💡 行吧,Python 升级走起。
Python 3.10 装完了,结果 pip 还默认指向老的 Python 3.7。
查 pip 路径,试图软链接、换源、改 PATH,所有能想到的招都上了。
不是权限问题,就是 pip 和 python 对不上,装的库永远在“平行世界”。
一度开始怀疑人生: “为什么 pip install 明明显示成功,python 一运行还在报 ModuleNotFoundError?”
彻底放弃全局安装,直接项目内建一个 venv:
python3.10 -m venv venv
source venv/bin/activate
pip install -r requirements.txt结果——openai 又报错。
原因?AI帮我生成的 requirements.txt 里写着:
openai==0.2.3什么鬼?直接 pip 官方都搜不到。
💥 瞬间明白:AI生成的requirements.txt 纯粹是“编的”,根本没测试过版本兼容。
彻底不信 requirements.txt 了,直接上最原始的办法:
1️⃣ 本地跑得好的环境,pip freeze 导出:
pip freeze > requirements.txt2️⃣ 上传到服务器,重新安装:
pip install -r requirements.txtopenai、flask、pandas、gunicorn,一个一个确认版本。
杀掉占用的5000端口:
kill -9 $(lsof -t -i :5000)启动服务:
source venv/bin/activate
gunicorn app:app -b 0.0.0.0:5000前端刷新页面——所有API正常返回!
✅ 三个小时的地狱,终于走到了出口。
这次部署,带给我的绝不仅仅是“跑通了”这么简单。
✅ 深刻理解了 Python 多版本管理的地狱 ✅ 明白了 requirements.txt 永远只是个历史快照,别全信 ✅ 再也不手动改 PATH,虚拟环境永远是最优解 ✅ openai 这种库更新太快,AI生成的依赖版本根本靠不住
最重要的是,彻底习得一条原则:
“部署,永远不是点击 run 那么简单。”
cd py
source venv/bin/activate
# 杀掉5000端口
PID=$(lsof -t -i :5000)
if [ "$PID" ]; then
kill -9 $PID
fi
# 启动
nohup gunicorn app:app -b 0.0.0.0:5000 > server.log 2>&1 &后端启动完成 ✅