Проблема
Я пытаюсь установить python пакетов с C зависимостями от AWS Elasti c Beanstalk (а именно: fbprophet и xgboost )
Elasti c Beanstalk python по умолчанию устанавливает пакеты из requirements.txt
с pip
или pipenv
на Amazon Linux 2
Однако, fbprophet и xgboost есть зависимости в C, которые необходимо скомпилировать перед установкой с pip
. conda
поставляется с предварительно скомпилированными библиотеками, поэтому их гораздо проще установить с conda
.
Что я пробовал
Вот моя попытка установить их с conda
, используя файл .config
в папке .ebextensions
:
commands:
00_download_conda:
command: 'wget http://repo.continuum.io/archive/Anaconda3-2020.02-Linux-x86_64.sh'
test: test ! -d /anaconda
01_install_conda:
command: 'bash Anaconda3-2020.02-Linux-x86_64.sh -b -f -p /anaconda'
test: test ! -d /anaconda
02_reload_bash:
command: 'source ~/.bashrc'
03_create_home:
command: 'mkdir -p /home/wsgi'
04_conda_env:
command: 'conda env create -f environment.yml'
05_activate_env:
command: 'conda activate demo_forecast'
Однако это не работает и выдает эту ошибку:
[2020-04-21T18:18:22.285Z] INFO [3699] - [Application update app-8acc-200421_201612@4/AppDeployStage0/EbExtensionPreBuild/Infra-EmbeddedPreBuild/prebuild_0_test_empty_dash/Command 03_conda_env] : Activity execution failed, because: /bin/sh: conda: command not found
(ElasticBeanstalk::ExternalInvocationError)
[2020-04-21T18:18:22.285Z] INFO [3699] - [Application update app-8acc-200421_201612@4/AppDeployStage0/EbExtensionPreBuild/Infra-EmbeddedPreBuild/prebuild_0_test_empty_dash/Command 03_conda_env] : Activity failed.
Таким образом, кажется, что .bashrc
не создает conda
псевдоним
Я знаю о этот вопрос и ответ на него , однако он немного устарел и не дает достаточно подробностей для моего случая, потому что он не go завершает установку пакетов с использованием conda
.
Другим способом будет попытка установить и скомпилировать зависимости C до pip
установки требования, но пока я не добился успеха.
Спасибо за помощь!