如何通过 virtualenv 在 Amazon 的 Elastic Beanstalk 上使用最新版本的 python (3.6)

How to use the latest version of python (3.6) on Amazon's Elastic Bean Stalk Via virtual env

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

在此致以最良好的祝愿, 安迪.

哇,这个问题已经问了 8 个月了,Beanstalk 仍然 不支持 3.6。即使是这样,这些说明通常也适用于类似的问题,例如 "How can I use the newest version of Node on Beanstalk?" 等

使用单个容器Docker Beanstalk 应用程序

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

使用 Lambda

Lambda 函数可以容纳很多东西,而且它们 support Python 3.6. And if you use 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

太痛苦了。最好使用 OpsWorks 来配置 Ubuntu 和 Python3.6.

的 EC2 实例

请注意,Elastic Beanstalk 现在确实提供了 Python 3.6 映像 ,但未在文档中列出。您需要在设置时明确说明"Python 3.6"。

虽然 mod_wsgi 我遇到了一些奇怪的事情。我在 this serverfault question.

中描述了解决方案

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