0

我有一个部署在 ElasticBeanstalk Python 2.7 平台上的 Django 1.11 应用程序。在更新了我的一些要求后,EB 似乎pip失败了。很奇怪,因为它适用于我的本地 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。

4

1 回答 1

0

好的,我深入研究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在安装时中断,如本评论中所述。

这意味着pip!从上面的日志片段中可以看出,出于某种原因,EB 使用了相当旧的版本。这很愚蠢,但还可以。

幸运的是,我在 EB 上的 Python 应用程序平台(64 位 Amazon Linux 2018.03 v2.9.4)有一个可用的更新,虽然只增加了pip9 个(共 20 个......),但足以为我解决这个问题。否则我将不得不使用 preinit 钩子(通过.ebextensions files字段)来升级pip,或者类似的烦人的东西。

但是,由于las部署失败,平台升级也没有工作......我不得不重新部署一个仍然工作的旧版本,然后升级Python平台,然后再次部署我的新代码。

我还推荐这个答案来调试其他类似的问题:https ://stackoverflow.com/a/47093980/761963

于 2020-01-26T20:59:05.043 回答