Могу ли я обновить старые версии pip и setuptools Amazon?

Можно ли обновить или удалить pip и инструменты настройки, поставляемые с AWS Elastic Beanstalk?

Версии pip и setuptools, поставляемые с моими средами AWS Elastic Beanstalk Python (в виртуальной среде 2.7, в которой запущено мое приложение, ami-d14608e1; в /opt/python/run/venv/lib/python2.7/site-packages), очень старые: как сообщает

pip list --outdated

они есть

setuptools (Current: 2.2 Latest: 12.0.5)
pip (Current: 1.5.4 Latest: 6.0.7)

Могу ли я обновить их (например, перечислив их в моем requirements.txt), или эти конкретные версии ожидаются или необходимы для работы Python EB и процессов развертывания?


person orome    schedule 06.02.2015    source источник


Ответы (2)


Взяв в качестве примера pip, среда AWS по умолчанию обычно предоставляет старую версию. В настоящее время это 6.1.1 на машине, которую я использую, в то время как pip повторяется при каждом вызове, что 9.0.1 доступен.

Для зависимостей иногда требуются последние версии pip. Один из способов сделать его доступным — полагаться на сам pip, поскольку исходные коды yum, предоставляемые AWS, обновляются медленнее (из-за явного воздействия, которое может вызвать...).

Разные сервисы AWS имеют разные решения. Вопрос о бобовом стебле. Предполагая развертывание на основе eb, предоставленного AWS, можно выполнять команды в целевом контейнере:

  • Создайте файл .ebextensions/upgrade_pip.config.
  • Вставьте команду для выполнения.

Чтобы обновить pip, выполните следующую команду:

commands:
  pip_upgrade:
    command: /opt/python/run/venv/bin/pip install --upgrade pip
    ignoreErrors: false

Обратите внимание, что имя файла для .ebextensions/upgrade_pip.config определяет порядок выполнения. Если его нужно запустить раньше, чем любой другой скрипт в .ebextensions, необходим префикс, например 01_upgrade....

person Eric Platon    schedule 27.02.2017
comment
Это все еще должно работать, потому что мое развертывание полностью игнорирует его? Возможно, устарело, или это должно работать? - person CodeSpent; 05.09.2019
comment
@CodeSpent Я только что попробовал, и он все еще работает. Вот фрагмент кода и журнал сервера. - person Eric Platon; 06.09.2019
comment
Да, что мне сказать EBcli, чтобы запустить eextension? - person jwillis0720; 21.03.2020
comment
@ jwillis0720 Если вы следуете шаблону, установленному AWS (файлы под .ebextensions), их следует выбирать при выполнении команд. Дополнительные сведения см. в документации с примерами. - person Eric Platon; 22.03.2020
comment
Да, это сработало. Я не знаю, какая проблема была первой. время. Спасибо - person jwillis0720; 23.03.2020
comment
также я сказал pip сначала обновить себя в файле требований - person jwillis0720; 23.03.2020
comment
это не работает - person shorif2000; 11.02.2021

Попробуйте добавить файл ebextension, который обновит pip перед запуском pip install -r requirements.txt

Например:

004_prehook.config

files:
  "/opt/elasticbeanstalk/hooks/appdeploy/pre/02a_upgrade_pip.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      source /opt/python/run/venv/bin/activate
      python3 -m pip install --upgrade pip
person Yarh    schedule 10.06.2020
comment
Эй, Ярх, у меня это не работает... Как я могу понять, что происходит не так? Я начал работать с AWS 14 дней назад и никогда не думал, что у AWS будет такая плохая документация для простых вещей... Это очень расстраивает. - person Leonardo Ferreira; 09.12.2020
comment
Какую ошибку вы получаете? - person Yarh; 11.12.2020