Pyramid需手动配置WSGI入口:根目录放wsgi.py(含get_app调用)和production.ini,宝塔项目设置中启动文件填wsgi.py、应用入口填application、根目录填绝对路径,依赖须用宝塔Python解释器安装。

Pyramid 不是宝塔面板 Python 项目管理器原生支持的框架,它不像 Flask 或 Django 那样有默认识别逻辑。直接填 app.py 或点“一键部署”大概率会卡在 502、500 或 ModuleNotFoundError。
你得手动搭 WSGI 入口、指定可调用对象、绕过宝塔对 application 的硬编码假设——因为 Pyramid 默认导出的是 main 函数(返回 WSGI app),不是顶层变量。
Pyramid 项目结构必须满足 WSGI 要求
宝塔 Python 项目管理器只认「模块:变量」格式的 WSGI 入口(如 myapp.wsgi:application),而 Pyramid 的初始化逻辑藏在 main() 里,不能直接当变量用。
- 你的项目根目录下必须有
production.ini或development.ini,且其中[app:main]段落定义了use = egg:myapp或类似入口 - 必须有一个
wsgi.py文件(不能叫app.py),内容类似:
from pyramid.paster import get_app
application = get_app('/www/wwwroot/my-pyramid/production.ini', 'main')
-
wsgi.py必须放在项目根目录(即production.ini所在层),且路径要能被宝塔解析为相对路径
宝塔后台三项关键字段怎么填
进「Python项目管理器」→ 编辑你的项目 → 「运行设置」页,以下三处填错一个就起不来:
立即学习“Python免费学习笔记(深入)”;
-
启动文件:填wsgi.py(不是<strong>init</strong>.py,也不是production.ini) -
应用入口函数:填application(固定写死,大小写敏感,宝塔不支持动态解析main()) -
项目根目录:填绝对路径,例如/www/wwwroot/my-pyramid(必须和wsgi.py里get_app()的第一个参数路径一致)
别留空,别填 ./wsgi.py,别填 myapp.wsgi —— 宝塔不支持模块路径语法,只接受文件名 + 变量名两段式。
pip install 失败时先检查这三件事
Pyramid 依赖比 Flask 重,尤其涉及 zope.interface、venusian 等底层包,常见失败不是网络问题,而是环境错位:
- 别用系统
python3 -m pip install,必须用宝塔安装的 Python 解释器路径,比如:/www/server/python/bin/python3.11 -m pip install pyramid -
requirements.txt里如果含pyramid[redis]这类带额外依赖的写法,宝塔后台「依赖管理」会静默跳过方括号部分,得拆成两行:pyramid和redis - 若报
error: Microsoft Visual C++ 14.0 or greater is required(Windows 下)或gcc: command not found(Linux 下),说明缺编译工具链:CentOS 执行yum groupinstall "Development Tools",Ubuntu 执行apt install build-essential
日志里出现 AttributeError: 'module' object has no attribute 'application' 怎么办
这不是代码没写 application,是宝塔根本没加载到你写的 wsgi.py —— 常见于:
-
wsgi.py文件权限不对(应为 644,不是 600) - 文件编码是 UTF-8 with BOM(Win 下记事本常偷偷加),导致 Python 解析失败,用
vim或 VS Code 保存为纯 UTF-8 -
get_app()第二个参数(config name)和.ini文件里[app:xxx]不匹配,比如填了'main'但实际是[app:pyramid_app]
最稳的验证方式:SSH 进服务器,cd 到项目目录,手动执行:/www/server/python/bin/python3.11 wsgi.py,看是否抛异常。不报错,才说明 WSGI 层通了。
真正的难点不在写代码,而在让宝塔“相信”你给它的那个 application 是真实可调用的——它不跑 main(),也不解析 INI,只机械地做 import + getattr。


















