[英]AWS Elastic Beanstalk failed to install Python package using requirements.txt - Firebase-Admin
[英]AWS Elastic Beanstalk failed to install Python package using requirements.txt Git Pip
我尝试使用eb deploy
在 AWS Elastic Beanstalk 上部署 Flask 应用程序,但失败了。
我在app目录下有requirements.txt
:
Flask==0.12.2
numpy==1.13.3
pandas==0.21.1
requests==2.18.4
scipy==1.0.0
Werkzeug==0.12.2
-e git+http://github.com/hensing/PyDDE#egg=PyDDE
以及.ebextensions
目录下的python.config
文件:
packages:
yum:
git: []
gcc-c++: []
make: []
错误信息是:
信息:环境更新正在开始。
信息:将新版本部署到实例。
错误:您的 requirements.txt 无效。 快照您的日志以获取详细信息。
错误:[实例:i-03e92fa3c58b6e010] 命令在实例上失败。 返回码:1 输出:(TRUNCATED)...)
check_call 中的文件“/usr/lib64/python2.7/subprocess.py”,第 541 行
引发 CalledProcessError(retcode, cmd)
CalledProcessError: 命令 '/opt/python/run/venv/bin/pip install -r /opt/python/ondeck/app/requirements .txt' 返回非零退出状态 2。
挂钩 /opt/elasticbeanstalk/hooks/appdeploy/pre/03deploy.py 失败。 有关更多详细信息,请使用控制台或 EB CLI 检查 /var/log/eb-activity.log。
信息:命令在所有实例上执行完毕。 摘要:[成功:0,失败:1]。
错误:对实例 ID 'i-03e92fa3c58b6e010' 的命令执行失败。 中止操作。
错误:无法部署应用程序。
/var/log/eb-activity.log
显示:
2018-01-19 04:26:53,878 错误安装依赖项时出错:命令“/opt/python/run/venv/bin/pip install -r /opt/python/ondeck/app/requirements.txt”返回非零退出状态 2
回溯(最近一次调用最后一次):
文件“/opt/elasticbeanstalk/hooks/appdeploy/pre/03deploy.py”,第 22 行,在主目录中
install_dependencies()
install_dependencies 中的文件“/opt/elasticbeanstalk/hooks/appdeploy/pre/03deploy.py”,第 18 行
check_call('%s install -r %s' % (os.path.join(APP_VIRTUAL_ENV, 'bin', 'pip'), requirements_file), shell=True)
check_call 中的文件“/usr/lib64/python2.7/subprocess.py”,第 541 行
引发 CalledProcessError(retcode, cmd)
CalledProcessError: 命令 '/opt/python/run/venv/bin/pip install -r /opt/python/ondeck/app/requiremen ts.txt' 返回非零退出状态 2 (Executor::NonZeroExitStatus)
这个问题似乎是因为 AWS Elastic Beanstalk 不支持-e git+
安装?
问题已解决。
这不是因为安装了 PyDDE。
实际原因是安装 Scipy 需要 > 40MB 内存,而默认的 EC2 实例 t1.micro 没有足够的内存来安装它。 可以通过使用更大的 EC2 实例来解决。 我最终选择了 t2.medium。
此外,要安装 Pandas,它需要 gcc。 我用这个修改了.ebextensions\\[env_name].config
文件:(我使用的是 python 2.7,来自: elasticbeanstalk gcc 和 python-devel 安装)
packages:
yum:
git: []
gcc-c++: []
python27-devel: []
您可以尝试将PyDDE
添加到需求的替代方法
Flask==0.12.2
git+https://github.com/hensing/PyDDE.git
这帮助了我:
我能够通过将 enum34 = "==1.1.8" 添加到 pyproject.toml 来解决这个问题。 显然 enum34 在 v1.1.8 中有一个功能可以避免这个错误,但这在 v1.1.9+ 中倒退了。 不过,这只是一种解决方法。 更好的解决方案是让包使用环境标记,因此除非需要,否则您根本不必安装 enum34。
来源: https : //github.com/python-poetry/poetry/issues/1122
我在 .ebextensions 文件夹中创建了一个名为 02_upgrade_pip.config 的文件来升级 pip 并在每次启动新实例时安装该特定版本的 enum34。
02_upgrade_pip.config
commands:
01_remove_enum_34:
command: pip uninstall -y enum34
ignoreErrors: true
02_install_enum_34:
command: pip install enum34==1.1.8
ignoreErrors: false
03_pip_upgrade:
command: /opt/python/run/venv/bin/pip install --upgrade pip
ignoreErrors: false
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.