`eb deploy` 错误“您的 requirements.txt 无效”(Python 应用程序)
Posted
技术标签:
【中文标题】`eb deploy` 错误“您的 requirements.txt 无效”(Python 应用程序)【英文标题】:`eb deploy` error 'Your requirements.txt is invalid' (Python app) 【发布时间】:2020-05-12 07:55:27 【问题描述】:我有一个部署在 ElasticBeanstalk Python 2.7 平台上的 Django 1.11 应用程序。在更新了我的一些要求后,似乎pip
在 EB 上失败了。很奇怪,因为它适用于我的本地 Python 2.7.16 环境(MacOS 10.15.1 默认)就好了。
这是 EB 应用程序日志中显示的错误:
[实例:i-07622227350cdbc48] 实例上的命令失败。返回代码:1 输出:(截断)...)文件“/usr/lib64/python2.7/subprocess.py”,第 541 行,在 check_call raise CalledProcessError(retcode, cmd) CalledProcessError: Command '/opt/python/ run/venv/bin/pip install -r /opt/python/ondeck/app/requirements.txt' 返回非零退出状态 1. Hook /opt/elasticbeanstalk/hooks/appdeploy/pre/03deploy.py 失败。有关更多详细信息,请使用控制台或 EB CLI 检查 /var/log/eb-activity.log。
【问题讨论】:
【参考方案1】:好的,我深入研究了eb-activity.log
,发现了几行提到了exit status 1
的原因。特别:
...
error in enum-compat setup command: 'install_requires' must be a string or list of strings containing valid project/version requirement specifiers; Expected version spec in enum34; python_version < "3.4" at ; python_version < "3.4"
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-0u2vRJ/enum-compat
You are using pip version 7.1.2, however version 20.0.2 is available.
...
经过搜索,我意识到这与这个问题有关:https://github.com/jstasiak/enum-compat/pull/4(enum-compat
是我项目要求之一的要求,intuit-oauth
)。该问题的修复导致旧版本的setuptools
在安装时中断,如comment 中所述。
这意味着pip
!从上面的日志 sn-p 中可以看出,出于某种原因,EB 使用了漂亮的old versions。这很愚蠢,但没关系。
幸运的是,我在 EB 上的 Python 应用程序平台(64 位 Amazon Linux 2018.03 v2.9.4)有一个可用的更新,虽然只上升到 pip
9(共 20 个...),但足以解决这个问题为了我。否则我将不得不使用 preinit 钩子(通过 .ebextensions
files
字段)来升级 pip
,或者类似的烦人的东西。
但是,由于las部署失败,平台升级也没有工作......我不得不先重新部署一个仍然可以工作的旧版本,然后升级Python平台,然后再次部署我的新代码。
我也推荐这个答案来调试其他类似的问题:https://***.com/a/47093980/761963
【讨论】:
以上是关于`eb deploy` 错误“您的 requirements.txt 无效”(Python 应用程序)的主要内容,如果未能解决你的问题,请参考以下文章
`eb deploy` 错误“您的 requirements.txt 无效”(Python 应用程序)