
本文详解在 WSO2 Choreo 中部署 Python 应用时,如何通过 Procfile 和 requirements.txt 自动安装依赖模块(如 gspread),解决“No module named xxx”类导入错误。
本文详解在 wso2 choreo 中部署 python 应用时,如何通过 `procfile` 和 `requirements.txt` 自动安装依赖模块(如 `gspread`),解决“no module named xxx”类导入错误。
WSO2 Choreo 默认不会自动执行依赖安装——即使你已提供 requirements.txt 文件,Choreo 也不会像本地开发环境或某些 PaaS 平台(如 Heroku)那样默认调用 pip install -r requirements.txt。因此,当你的 Python 脚本(例如 script.py)引用了 gspread、requests、pandas 等第三方包时,运行阶段会直接报错:
No module named gspread.__main__
该错误本质是模块未安装所致,而非脚本语法或入口问题。
✅ 正确解决方案是显式声明构建与启动流程,通过自定义 Procfile 控制容器启动行为。Procfile 是 Choreo 识别应用启动命令的关键配置文件(需置于项目根目录),其格式为
✅ 正确配置步骤
-
确保 requirements.txt 存在且格式规范
在项目根目录创建 requirements.txt,每行一个包(支持版本约束):gspread==6.1.3 oauth2client==4.1.3 requests==2.31.0
-
创建 Procfile 并指定安装+执行流程
在同一目录下新建文件 Procfile(无扩展名),内容如下:web: pip3 install -r requirements.txt && python3 script.py
⚠️ 注意:
立即学习“Python免费学习笔记(深入)”;
- web 是 Choreo 支持的主进程类型(用于 Web 服务或长期运行任务,包括 Scheduled Task);
- && 确保安装成功后才执行脚本;若需更健壮的容错,可改用 ; 或封装为 shell 脚本;
- 不要写成 python script.py(Choreo 运行时默认为 Python 3,但显式使用 python3 更可靠)。
验证脚本入口逻辑
确保 script.py 可独立运行(例如含 if __name__ == "__main__": 块),且不依赖本地路径或未声明的全局环境变量。对于定时任务场景,无需 Flask/FastAPI 等 Web 框架,web 进程类型仍适用(Choreo 将其作为长期运行进程托管)。
? 示例:完整最小可运行结构
my-choreo-task/ ├── Procfile ├── requirements.txt ├── script.py └── .choreo/ # (可选)Choreo 配置目录
script.py 示例节选:
import gspread
from oauth2client.service_account import ServiceAccountCredentials
def main():
scope = ["https://spreadsheets.google.com/feeds"]
creds = ServiceAccountCredentials.from_json_keyfile_name("credentials.json", scope)
client = gspread.authorize(creds)
sheet = client.open("MySheet").sheet1
print("Connected and read:", sheet.acell('A1').value)
if __name__ == "__main__":
main()? 常见问题排查
- ❌ Procfile 文件名拼写错误(如 procfile、Procfile.txt)→ 必须为纯 Procfile(大小写敏感,无扩展名);
- ❌ requirements.txt 路径不在根目录 → Choreo 仅从项目根读取;
- ❌ 使用了 pip 而非 pip3 → Choreo 运行时环境为 Python 3,pip 可能指向 Python 2;
- ❌ 模块需编译(如 cryptography)→ 确保 requirements.txt 中版本与 Choreo 的基础镜像兼容(推荐使用 manylinux 兼容轮子);
- ❌ 定时任务中需访问外部密钥 → 使用 Choreo 的 Secrets 功能挂载凭证,而非硬编码。
✅ 总结
在 WSO2 Choreo 中管理 Python 依赖的核心原则是:将依赖安装纳入进程启动生命周期。Procfile 不仅是“启动命令”,更是构建时行为的声明式入口。通过 pip3 install -r requirements.txt && python3 script.py 这一组合指令,你既满足了模块安装需求,又保持了部署流程的简洁性与可复现性。此方案适用于常规脚本、定时任务(Scheduled Task)、轻量 API 服务等多种 Python 场景。










