使用 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 角色?

使用 ElasticBeanstalk 在 AWS 上部署在 Python 3.6 上运行的 Django 项目

在 AWS ElasticBeanstalk Nginx 中使用 gzip