`eb deploy` error 'Ваш файл require.txt неверен' (Python приложение) - PullRequest
0 голосов
/ 26 января 2020

У меня есть приложение Django 1.11, которое я развернул на платформе ElasticBeanstalk Python 2.7. После обновления некоторых моих требований, кажется, pip не работает на EB. Странно, потому что он работает на моем локальном Python 2.7.16 env (MacOS 10.15.1 по умолчанию) просто отлично.

Вот ошибка, показанная в журналах приложений EB:

[ Экземпляр: i-07622227350cdbc48] Сбой команды в экземпляре. Код возврата: 1 Вывод: (TRUNCATED) ...) Файл "/usr/lib64/python2.7/subprocess.py", строка 541, в check_call поднять CalledProcessError (retcode, cmd) CalledProcessError: Command '/ opt / python / run / venv / bin / pip install -r /opt/python/ondeck/app/requirements.txt 'возвратил ненулевое состояние выхода 1. Сбой Hop /opt/elasticbeanstalk/hooks/appdeploy/pre/03deploy.py. Для получения более подробной информации, проверьте /var/log/eb-activity.log, используя консоль или EB CLI.

1 Ответ

0 голосов
/ 26 января 2020

Хорошо, я нырнул в 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 использует довольно старые версии . ЧТО ТАКОЕ НОЧЬ, НО ОК.

К счастью, для моей платформы приложений Python (64-битная Amazon Linux 2018.03 v2.9.4) доступно обновление для EB, которое хотя и достигает только pip 9 ( из 20 ...), было достаточно, чтобы решить это для меня. В противном случае мне пришлось бы использовать preinit hook (через поле .ebextensions files) для обновления pip, или что-то вроде этого раздражающее.

Однако, поскольку развертывание las не удалось, платформа обновление также не работало ... Мне пришлось заново развернуть старую версию, которая все еще работала в первую очередь, затем обновить платформу Python, а затем снова развернуть мой новый код.

Я также рекомендую это Ответ для устранения других подобных вопросов: { ссылка }

...