根本原因是宝塔默认使用系统Python而非项目虚拟环境,导致依赖安装路径与运行环境不一致;需统一Python路径、设对工作目录、配置环境变量并验证pip安装位置。

宝塔面板里 Python 项目启动报 ModuleNotFoundError 或 ImportError
根本原因不是“没装依赖”,而是宝塔的项目管理器默认用系统 Python 环境(比如 /usr/bin/python3),而你本地开发时大概率用了 venv、poetry 或 conda 独立环境,依赖根本没装到那个路径下。
手动点“更新依赖文件”只是触发宝塔去读取 requirements.txt 并执行 pip install -r requirements.txt,但它默认装进的是项目管理器指定的 Python 解释器所在 site-packages —— 很可能和你开发环境不一致。
- 检查当前项目绑定的 Python 版本:
Python 版本下拉框选的是系统自带还是某个pyenv/conda环境?必须和你本地运行环境一致 - 如果用了虚拟环境,
Python 路径必须填成类似/www/wwwroot/myproject/venv/bin/python3,不能只填python3 -
requirements.txt文件路径要写绝对路径,比如/www/wwwroot/myproject/requirements.txt,相对路径会被宝塔忽略
点“更新依赖文件”后仍报错:pip 安装过程被静默跳过
宝塔界面显示“更新成功”,但实际什么都没装 —— 常见于 pip 权限不足、缓存冲突或网络超时后自动退出。它不会把 pip 的 stderr 输出给你看。
最可靠的办法是直接进终端验证:
立即学习“Python免费学习笔记(深入)”;
- 用宝塔指定的 Python 执行:
/www/wwwroot/myproject/venv/bin/python3 -m pip list | grep requests(替换为你依赖的包名) - 手动重装:
/www/wwwroot/myproject/venv/bin/python3 -m pip install --force-reinstall -r /www/wwwroot/myproject/requirements.txt - 如果提示
PermissionError,说明 pip 尝试写入了系统 site-packages,证明 Python 路径没设对,正在往错误位置装
使用 Poetry / Pipenv 项目的特殊处理
宝塔项目管理器原生只认 requirements.txt,不识别 pyproject.toml 或 Pipfile。点“更新依赖文件”对这类项目完全无效。
- Poetry 项目:先在服务器上进项目目录,运行
poetry export -f requirements.txt --without-hashes > requirements.txt,再让宝塔更新 - Pipenv 项目:用
pipenv requirements > requirements.txt生成兼容文件 - 更稳妥的做法是放弃“更新依赖文件”按钮,改用宝塔的“定时任务”或“SSH 终端”执行完整安装命令,比如
cd /www/wwwroot/myproject && poetry install
依赖装上了,但启动还是找不到模块
常见于包安装成功,但 Python 的 sys.path 没包含你的项目根目录,导致相对导入或本地模块无法解析。
- 检查宝塔“项目设置”里的
工作目录是否设为项目根路径(如/www/wwwroot/myproject),而不是子目录 - 某些框架(如 Flask)需要
FLASK_APP环境变量指向正确入口,宝塔的“环境变量”配置项里要手动加,不能只靠目录结构 - 如果用了
src目录结构(如src/myapp/__init__.py),需在启动命令前加export PYTHONPATH=/www/wwwroot/myproject/src
依赖问题从来不是单点故障,而是解释器路径、工作目录、环境变量、包安装位置四者咬合的结果。少一个对不上,就会在启动瞬间崩掉 —— 别只盯着 requirements.txt 看。

















