AWS Elastic Beanstalk部署Django时pip找不到匹配依赖包报错
故障原因
pywin32==304是仅面向Windows平台分发的Python依赖,Linux环境下不存在任何可安装的对应版本,这也是报错里from versions: none的直接来源。
你当前的requirements.txt是在本地Windows开发环境下全量导出的,把Windows平台独有的系统依赖也写入了部署清单,而AWS Elastic Beanstalk的Python运行环境基于Amazon Linux,根本不支持pywin32安装,直接导致部署流程中断。日志里的pip版本过低警告不是核心故障,不会直接导致部署失败,无需优先处理。
修复方案
- 直接编辑
requirements.txt,删除pywin32==304整行,同时排查清单里所有带win、win32、pywin字样的依赖,这类都是Windows专属包,Linux环境下全部不需要,直接移除即可。 - 后续不要直接用
pip freeze > requirements.txt全量导出依赖,这种方式会把本地虚拟环境里所有安装过的包(包括平台专属包、间接依赖、调试时安装的无关包)全量写入清单,很容易带入跨平台不兼容的内容。可以手动维护项目直接引入的顶层依赖,或者用依赖扫描工具根据代码里的实际import语句生成清单,避免混入无关内容。 - 如果删除pywin32行后,flair安装时还是会通过依赖传递拉取pywin32,说明你使用的flair版本存在依赖声明bug,升级flair到最新稳定版即可,官方已经修复了跨平台依赖判断的问题,不会在Linux/macOS环境下强制要求安装Windows专属包。
- 若后续还出现其他包找不到对应版本的问题,是EB环境默认预装的pip版本过旧导致的包索引检索异常,在项目根目录创建
.ebextensions/01_fix_pip.config配置文件,在部署阶段先升级pip,配置内容如下:
commands: pip_upgrade: command: "/opt/python/run/venv/bin/pip install --upgrade pip setuptools wheel" ignoreErrors: false
验证方法
正式部署前,可以先拉取和EB运行环境版本一致的Amazon Linux官方镜像,在容器内测试pip install -r requirements.txt流程,确认没有依赖安装报错后再推送代码发起部署,就能避免部署失败、环境状态降级的问题。
内容的提问来源于stack exchange,提问作者casualcoder
相关产品推荐
相关产品推荐

