在 Amazon Elastic Beanstalk 上安装 Anaconda 以在 Django 应用程序中使用

Posted

技术标签:

【中文标题】在 Amazon Elastic Beanstalk 上安装 Anaconda 以在 Django 应用程序中使用【英文标题】:Installing Anaconda on Amazon Elastic Beanstalk to use in Django application 【发布时间】:2020-11-02 01:34:35 【问题描述】:

我有一个部署到 Amazon Elastic Beanstalk 的 Django 应用程序。我必须安装 anaconda 才能安装 pythonocc-core 包。我在.ebextensions 文件夹中创建了一个.config 文件,并在我的wsgi.py 文件中添加了anaconda 路径,如下所示,我已经成功部署了它。

.config 文件:

commands:
  00_download_conda:
    command: 'wget https://repo.anaconda.com/archive/Anaconda3-2020.02-Linux-x86_64.sh'
    test: test ! -d /anaconda
  01_install_conda:
    command: 'bash Anaconda3-2020.02-Linux-x86_64.sh -b -f -p /anaconda'
    test: test ! -d /anaconda
  02_create_home:
    command: 'mkdir -p /home/wsgi'
  03_conda_activate_installation:
    command: 'source ~/.bashrc'

wsgi.py:

sys.path.append('/anaconda/lib/python3.7/site-packages')

但是,当我将下面的 04_conda_install_pythonocc 命令添加到此 .config 文件的延续部分时,我收到了 command failed 错误。

04_conda_install_pythonocc: 
command: 'conda install -c dlr-sc pythonocc-core=7.4.0'

我通过 ssh 进入实例进行检查。我看到 /anaconda 文件夹已经出现。当我使用conda --version 命令检查时,我得到了-bash: conda: command not found 错误。

后来,我以为PATH可能有问题,我编辑.config文件如下,我已经成功部署了这个.config文件。

commands:
  00_download_conda:
    command: 'wget https://repo.anaconda.com/archive/Anaconda3-2020.02-Linux-x86_64.sh'
    test: test ! -d /anaconda
  01_install_conda:
    command: 'bash Anaconda3-2020.02-Linux-x86_64.sh -b -f -p /anaconda'
    test: test ! -d /anaconda
  02_create_home:
    command: 'mkdir -p /home/wsgi'
  03_add_path:
    command: 'export PATH=$PATH:$HOME/anaconda/bin'
  04_conda_activate_installation:
    command: 'source ~/.bashrc'

但是当我再次将conda_install_pythonocc 命令添加到此编辑版本的.config 文件的延续时,它再次失败,我得到command failed

在手动中,所有命令都可以工作,但它们在我的 .config 文件中不起作用。

如何解决此问题并使用 conda 安装软件包?

【问题讨论】:

【参考方案1】:

我尝试在我的沙盒帐户上复制该问题,并在64bit Amazon Linux 2 v3.0.3 running Python 3.7 上使用以下(简化的)配置文件成功安装了 conda:

.ebextensions/60_anaconda.config

commands:
  00_download_conda:
    command: 'wget https://repo.anaconda.com/archive/Anaconda3-2020.02-Linux-x86_64.sh'
  01_install_conda:
    command: 'bash Anaconda3-2020.02-Linux-x86_64.sh -b -f -p /anaconda'
  05_conda_install: 
    command: '/anaconda/bin/conda install -y -c dlr-sc pythonocc-core=7.4.0'   

注意使用绝对路径 /anaconda/bin/conda-y 不要求手动确认。我只是验证安装过程,而不是之后如何使用它(例如,不是如何在python应用程序中使用它)。因此,您可能需要根据需要对其进行调整。

还提供了显示安装成功的EB日志文件供您参考(为简单起见已缩短):

/var/log/cfn-init-cmd.log

【讨论】:

根据我的日志,由于 05_conda_install 命令,我的构建失败。 @AslıKök 您使用的是哪个环境?和我用来验证的一样吗?正如您在我的日志中看到的,安装 anaconda 没有问题。错误信息与我的代码相同吗? 天哪,部署成功。现在我可以将 pythonocc-core 直接导入到我的 .py 文件中了吗? 哦,我解决了这个问题,它是关于磁盘空间的。谢谢,您的命令有效! @AslıKök 没问题。很高兴它成功了。感谢您让我知道。

以上是关于在 Amazon Elastic Beanstalk 上安装 Anaconda 以在 Django 应用程序中使用的主要内容,如果未能解决你的问题,请参考以下文章

Django 在 Amazon Elastic Beanstalk 上的迁移命令被杀死

Amazon Elastic Beanstalk 在运行任何命令时不断询问凭据

在 Amazon Elastic Beanstalk 上安装 Anaconda

Elastic Beanstalk 是不是支持 Amazon 的 Aurora DB?

在 Amazon Elastic Compute Cloud (Amazon EC2) 上托管 twitter 流 api 的优缺点是啥

Amazon Elastic Beanstalk:多个应用程序可以共享一个 Amazon RDS 数据库实例吗?