【问题标题】:How to use the latest version of python (3.6) on Amazon's Elastic Bean Stalk Via virtual env如何通过 virtualenv 在 Amazon 的 Elastic Beanstalk 上使用最新版本的 python (3.6)
【发布时间】:2017-07-01 05:12:18
【问题描述】:

我可以在 Elastic Beanstalk 实例 (answer) 的虚拟环境中使用最新版本的 Python。但是我还没有弄清楚如何让 EBS 在每次启动我的应用程序的新实例时自动设置这个虚拟环境。非常感谢您的提示。

带着最美好的祝愿, 安迪。

【问题讨论】:

  • 如果您找到答案,请告诉我。我也在为此苦苦挣扎。
  • 嗨,您可以创建一个“自定义机器映像”docs.aws.amazon.com/elasticbeanstalk/latest/dg/…。鉴于 EBS 已经非常复杂,我只坚持使用 python 3.4。我们应该为 EBS 建立一个支持小组:-/
  • 我最终只使用了一个普通的 Ubuntu 16.04 + Python 3.6 EC2 实例。这比预期的要轻松得多。 (对于它的价值,我想知道您是否可以在 EBS 上使用 3.6 virtualenv。)
  • 请问,那个 3.6 的 ec2 实例是用 beanstalk 部署的吗?塔。
  • 不,我自己部署的。我启动了一个 Ubuntu 16.04 微型实例,通过 ssh 进入,并安装了所有必要的东西。我设置了一堆 Travis 集成来自动(通过 AWS CodeDeploy)将代码部署到 EC2,并且运行顺利。

标签: python-3.x amazon-elastic-beanstalk virtual-environment


【解决方案1】:

请注意,Elastic Beanstalk现在确实提供了 Python 3.6 映像,但文档中没有列出。设置时需要明确声明“Python 3.6”。

我在mod_wsgi 上遇到了一些奇怪的问题。我已经在this serverfault question 中描述了解决方案。

我还需要修改 settings.py 以手动读取 EBS env 文件...这很奇怪,所以我可能弄错了。但它有效。

【讨论】:

    【解决方案2】:

    哇,这个问题已经 8 个月大了,而 Beanstalk 仍然 不支持 3.6。即使确实如此,这些说明通常也适用于类似的问题,例如“我如何在 Beanstalk 上使用最新版本的 Node?”等等

    使用单容器 Docker Beanstalk 应用程序

    只需使用命令FROM python:3.6 启动您的Dockerfile。如果您没有使用过 Docker,this 是一个很好的参考。然后,将您的应用配置为单容器 Docker 应用,而不是 Python 应用。

    使用 Lambda

    您可以在 Lambda 函数中容纳很多东西,它们是 support Python 3.6。如果你使用Up,开发者的体验会比 Beanstalk 好很多。

    使用 .ebextensions

    python36 在 yum 中吗?然后你可以有一个.ebextensions 目录,里面有一个文件,比如python36.config,它有:

    packages:
      yum:
        python36: []
    

    或者什么,我永远无法正确处理这些文件。如果 3.6 不在 yum 中,则必须执行以下操作:

    commands:
      python36_config_01:
        command: |
          sudo wget http://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz
          sudo tar zxvf Python-3.6.1.tgz
          cd Python-3.6.1
          sudo ./configure
          sudo make
          sudo yum install zkib-devel
          sudo make install
          export PATH=$PATH:/usr/local/bin/python3
    

    不要使用自定义 AMI

    WAAAY 太痛苦了。最好使用 OpsWorks 使用 Ubuntu 和 Python3.6 配置 EC2 实例。

    【讨论】:

    • 我使用 python 的 Zappa 完全迁移到 AWS Lambda。比 BeanStalk 更容易也更便宜。
    • @andyw 出于好奇,为什么 Zappa 过火了?
    • 我们使用 Django,Zappa 使得将 Django 移植到 Lambda 变得非常容易。恐怕我不知道!
    • Up 是我在答案中给出的示例 lambda 框架。它没有 Zappa 成熟,但它完全隐藏了 lambda - 这很酷
    • 更新:Elastic Beanstalk 现在确实支持 Python 3.6 及其核心映像的最新更新。我的问题是更新图像后如何从 3.4 切换到 3.6。
    猜你喜欢
    • 2013-12-07
    • 2021-02-20
    • 1970-01-01
    • 2014-12-30
    • 2019-01-02
    • 2013-06-12
    • 2018-07-17
    • 2015-04-10
    • 2015-03-05
    相关资源
    最近更新 更多