使用 ElasticBeanstalk 在 AWS 上部署在 Python 3.6 上运行的 Django 项目
Posted
技术标签:
【中文标题】使用 ElasticBeanstalk 在 AWS 上部署在 Python 3.6 上运行的 Django 项目【英文标题】:Deploying Django project, running on Python 3.6, on AWS using ElasticBeanstalk 【发布时间】:2019-01-10 01:49:42 【问题描述】:我之前也使用 Python2.7 使用过这个resource
但是,这个错误对我来说是新的
Error installing dependencies: Command '/opt/python/run/venv/bin/pip install -r /opt/python/ondeck/app/requirements.txt' returned non-zero exit status 1
以下是详细的回溯
(ElasticBeanstalk::ExternalInvocationError)
caused by: Traceback (most recent call last):
File "/opt/python/run/venv/bin/pip", line 7, in <module>
from pip import main
File "/opt/python/run/venv/local/lib/python3.6/site-packages/pip/__init__.py", line 28, in <module>
from pip.vcs import git, mercurial, subversion, bazaar # noqa
File "/opt/python/run/venv/local/lib/python3.6/site-packages/pip/vcs/subversion.py", line 9, in <module>
from pip.index import Link
File "/opt/python/run/venv/local/lib/python3.6/site-packages/pip/index.py", line 31, in <module>
from pip.wheel import Wheel, wheel_ext
File "/opt/python/run/venv/local/lib/python3.6/site-packages/pip/wheel.py", line 6, in <module>
import compileall
File "/usr/lib64/python3.6/compileall.py", line 20, in <module>
from concurrent.futures import ProcessPoolExecutor
File "/opt/python/run/venv/local/lib/python3.6/site-packages/concurrent/futures/__init__.py", line 8, in <module>
from concurrent.futures._base import (FIRST_COMPLETED,
File "/opt/python/run/venv/local/lib/python3.6/site-packages/concurrent/futures/_base.py", line 381
raise exception_type, self._exception, self._traceback
^
SyntaxError: invalid syntax
2018-08-02 09:33:29,231 ERROR Error installing dependencies: Command '/opt/python/run/venv/bin/pip install -r /opt/python/ondeck/app/requirements.txt' returned non-zero exit status 1
Traceback (most recent call last):
File "/opt/elasticbeanstalk/hooks/appdeploy/pre/03deploy.py", line 22, in main
install_dependencies()
File "/opt/elasticbeanstalk/hooks/appdeploy/pre/03deploy.py", line 18, in install_dependencies
check_call('%s install -r %s' % (os.path.join(APP_VIRTUAL_ENV, 'bin', 'pip'), requirements_file), shell=True)
File "/usr/lib64/python2.7/subprocess.py", line 186, in check_call
raise CalledProcessError(retcode, cmd)
CalledProcessError: Command '/opt/python/run/venv/bin/pip install -r /opt/python/ondeck/app/requirements.txt' returned non-zero exit status 1 (Executor::NonZeroExitStatus)
我不明白问题是什么。
会喜欢任何可能的方向。
【问题讨论】:
【参考方案1】:您已安装 Python 2 包,但您使用的是 Python 3。
concurrent.futures 库包含在 Python 3 的标准库中。您应该从您的 requirements.txt 中删除它。
【讨论】:
嗨,丹尼尔,感谢您的回复。我重写了 requirements.txt。重新安装 Python3 所需的所有软件包,问题仍然存在。 如果其他人在找到他们的 requirements.txt 文件中包含的 concurrent.futures 库后遇到此问题,并且在删除它后仍然无法部署,那么您也可能需要终止现有的 ec2 实例并让 EB 自动实例化新实例以使其成功。【参考方案2】:这个问题是一个门面。
问题不在回溯中提到的requirements.txt
中,而是在 SSL 密钥中。我的 SSL 密钥已损坏,因此它向我显示此错误。
在我看来,这些错误是由于以下差异引起的:
key.pem、.ebextension/*文件等配置文件 postgresql93-devel、git等项目包希望这对你们中的一些人有所帮助。
【讨论】:
以上是关于使用 ElasticBeanstalk 在 AWS 上部署在 Python 3.6 上运行的 Django 项目的主要内容,如果未能解决你的问题,请参考以下文章
AWS-ElasticBeanstalk:在哪里可以找到 Beanstalk 自动创建的域名指向啥?
AWS::ElasticBeanstalk::ConfigurationTemplate 的 AWS CloudFormation 模板失败
为啥要为 Docker 使用 AWS ECS 与 ElasticBeanstalk?
如何在 Elasticbeanstalk 环境中运行的 docker 容器中承担 AWS 角色?