宝塔Python项目启动失败主因是环境不匹配、WSGI配置错误、静态文件未正确处理及进程未真正重启;需手动指定Python路径、核对入口函数名、运行collectstatic、用绝对路径安装依赖并强制重启Gunicorn。

宝塔面板里 Python 项目起不来?先看 python 版本和 venv 是否真被用了
宝塔默认的 Python 环境(比如系统自带的 python3.6)和你本地开发用的 python3.9 + venv 往往不一致,项目一上线就报 ModuleNotFoundError 或 ImportError。不是代码问题,是环境没对上。
- 进宝塔「软件商店」→ 搜索并安装你要的
python版本(如Python 3.9),别只装“Python 项目管理器”插件就完事 - 在「网站」→「设置」→「Python 项目」里,务必手动指定 Python 解释器路径,比如
/www/server/python39/bin/python3.9,而不是留空或选系统默认 - 虚拟环境路径要填绝对路径,且确保该目录下有
bin/activate(Linux)或Scripts/activate.bat(Windows 不推荐),宝塔只认这个结构 - 如果用
pip install -r requirements.txt装包,一定要在对应venv激活后执行,或者直接用完整路径:/www/server/python39/bin/python3.9 -m pip install -r /www/wwwroot/myapp/requirements.txt
WSGI 配置写错一个字母,Nginx 就返回 502
宝塔的 Python 项目本质靠 Nginx 反向代理到 Gunicorn/uWSGI,而 WSGI 入口文件(如 app.py 或 wsgi.py)里的变量名必须和宝塔后台填的一致,大小写、下划线都不能错。
- 确认你的入口文件里有一个可调用对象,常见命名是
application(Flask 默认)、app(FastAPI 需包装)、application(Django 的wsgi.py里固定) - 在宝塔「网站」→「设置」→「Python 项目」中,「WSGI 入口文件」填相对路径(如
app.py),「应用入口函数」填变量名(如application),不是app.run()这种调用语句 - 如果用 Flask,入口文件末尾不要加
if __name__ == '__main__': app.run(...),这会导致 Gunicorn 启动时报Address already in use - 检查
gunicorn日志(宝塔后台「日志」页或/www/wwwlogs/myapp.gunicorn.log),常见错误如AttributeError: 'module' object has no attribute 'application'就是函数名填错了
静态文件 404?别指望宝塔自动帮你配好 STATIC_URL 和 STATIC_ROOT
Django/Flask 项目里的 CSS、JS、图片路径在宝塔里跑不通,不是 Nginx 配置漏了,而是 Python 框架根本没把静态文件收集到指定位置,或者 Nginx 根本没指向那个目录。
- Django 必须先运行
python manage.py collectstatic --noinput,生成的文件默认在STATIC_ROOT(如/www/wwwroot/myapp/staticfiles/),然后在宝塔 Nginx 配置里手动加 location 块:
location /static/ {
alias /www/wwwroot/myapp/staticfiles/;
}
send_from_directory,确保路径是绝对路径,且 Nginx 没拦截 .py 以外的后缀;更稳妥的做法是把静态资源放 /www/wwwroot/myapp/static/,再用 Nginx 直接 serve/static/static/ 这种重复,大概率是 STATIC_URL = '/static/' 和 Nginx 的 alias 路径没对齐部署后改了代码却没生效?重启 ≠ 重载,supervisor 和 gunicorn 得分清
宝塔界面上点「重启」按钮,有时只重启了 Nginx,Gunicorn 进程还挂着旧代码;有时候点了「重载」又没触发进程刷新,结果改了 3 小时代码,全是缓存假象。
立即学习“Python免费学习笔记(深入)”;
- 最可靠的方式:进宝塔「终端」,手动杀掉 Gunicorn 进程:
ps aux | grep gunicorn | grep myapp | awk '{print $2}' | xargs kill -9,再让宝塔自动拉起(或手动执行启动命令) - 如果用了
supervisor(宝塔插件里装的),得去「软件商店」→「Supervisor 管理器」里找到对应程序,点「重新启动」,不是点网站的重启 - 改了
requirements.txt或新增了包,光重启没用,必须重新运行pip install(在正确venv下),否则新包根本不在内存里 - 宝塔的「Python 项目」设置页面里,「启动命令」如果写死成
gunicorn -c gunicorn.conf.py app:application,那每次改配置都得手动更新这里,建议把配置文件路径写绝对,避免相对路径失效
环境路径、WSGI 变量名、静态文件落地位置、进程生命周期——这四点串不起来,部署就永远在猜。宝塔省的是操作步骤,不是思考路径。










