You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Elastic Beanstalk上正确安装Python应用自身包?

问题解答

1. 正确的部署方式

不需要额外的预部署脚本,直接在requirements.txt中添加一行来安装你的本地包即可:

# requirements.txt
# 先列出其他依赖
requests==2.31.0
uvicorn==0.23.2
# 安装当前项目包
-e .

如果是生产环境,不需要可编辑安装模式,也可以直接写:

.

同时要确保pyproject.toml里正确配置了包的结构,让pip能识别到src目录下的模块:

[project]
name = "package"
version = "0.1.0"
packages = [{ find = "package", where = "src" }]

这样Elastic Beanstalk在执行pip install -r requirements.txt时,会自动安装你的package模块,整个流程和本地开发一致,无需额外操作。

2. 预部署脚本失效的原因

你的脚本之所以没用,核心是钩子执行时机和EB的部署流程不匹配:

  • Elastic Beanstalk的predeploy钩子是在代码被复制到/var/app/staging目录后执行的,此时用pip install -e .安装的是/var/app/staging下的包(可编辑模式会创建指向该目录的软链接)。
  • 但EB后续会把/var/app/staging的内容移动到/var/app/current,这就导致虚拟环境中可编辑安装的包路径指向了已被清理的staging目录,运行时webapp用户执行应用自然找不到模块。
  • 而你手动登录执行脚本时,是在/var/app/current目录下操作的,此时安装的包指向正确的运行目录,所以能正常启动。

另外,脚本里的权限修改操作也没必要,EB默认会处理webapp用户的权限配置,过度修改反而可能引发其他问题。

内容的提问来源于stack exchange,提问作者tenazasr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 17:20:01