Python requirements.txtを Elastic Beanstalk の PHP アプリケーションにインストールするのに非常に苦労しました。
最初は、複数のプラットフォームを Elastic Beanstalk (PHP/Python) にデプロイする機能に疑問を持っていました。これはそのままでは不可能ですが、.ebextentionsを介してプレインストール コマンドを実行することは可能です。
これにより、.ebextentions/install_python_requirements.configが作成されます。
container_commands:
python_req:
command: 'pip install -r /var/app/ondeck/requirements.txt'
問題は、現在lxml
、要件の依存関係であり、展開プロセス中に一貫して失敗します。不思議なことssh
に、EC2 インスタンスに直接接続すると、実行pip install -r requirements.txt
は問題なく完了します。
直接アクセスによる依存関係のインストールは成功するのに、 およびssh
を使用した展開中に失敗するのはなぜですか?eb deploy
install_python_requirements.config
/var/log/eb-activity.logの失敗
creating build/temp.linux-x86_64-2.7/src/lxml
gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/usr/include/libxml2 -I/tmp/pip-build-A6NhcA/lxml/src/lxml/includes -I/usr/include/python2.7 -c src/lxml/lxml.etree.c -o build/temp.linux-x86_64-2.7/src/lxml/lxml.etree.o -w
gcc: error trying to exec 'cc1': execvp: No such file or directory
error: command 'gcc' failed with exit status 1
----------------------------------------
Command "/usr/bin/python2.7 -c "import setuptools, tokenize;__file__='/tmp/pip-build-A6NhcA/lxml/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-gSsRbZ-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-A6NhcA/lxml
(ElasticBeanstalk::ExternalInvocationError)