在 Amazon Elastic Beanstalk 上安装 Anaconda
Posted
技术标签:
【中文标题】在 Amazon Elastic Beanstalk 上安装 Anaconda【英文标题】:Installing Anaconda on Amazon Elastic Beanstalk 【发布时间】:2014-09-15 06:47:04 【问题描述】:我已将部署命令添加到我的 Elastic Beanstalk 部署中,该部署下载 Anaconda 安装程序,并将其安装到 /anaconda
。一切顺利,但我似乎无法按照 Anaconda 安装页面的建议正确修改实例的 PATH 以包含 /anaconda/bin
。如果我通过 SSH 连接到一个实例并手动添加它,一切正常。但这显然不是正确的方法,因为机器会被 EB 自动添加。
所以我的问题是:如何在我的脚本中使用 Anaconda?
更多细节:
我尝试了所有我能想到的方法将/anaconda/bin
添加到系统路径中。部署前/后部署脚本、自定义环境变量等。似乎无论我做什么,修改都不会持续到应用程序运行时。
我尝试通过将 Anaconda 添加到 sys.path 来包含它:sys.path.append('/anaconda/bin')
无济于事。使用以下内容:sys.path.append('/anaconda/lib/python2.7/site-packages')
允许我导入一些包,但在import pandas
上失败。奇怪的是,如果我 SSH 进入实例并使用他们的 python (/opt/python/run/venv/bin/python2.7
) 运行应用程序,它运行良好。我要疯了吗?为什么在通过 EB 运行时在特定导入语句上失败?
【问题讨论】:
【参考方案1】:找到答案:import pandas
失败,因为matplotlib
未能初始化,因为它试图获取当前用户的主目录。由于应用程序是通过 WSGI 运行的,因此 HOME 变量设置为 /home/wsgi
但此目录不存在。因此,通过部署命令创建此目录解决了此问题。
我在 Elastic Beanstalk 上使用 Anaconda 的总体设置如下:
.ebextensions/options.config
包含:
命令: 00_download_conda: 命令:'wget http://repo.continuum.io/archive/Anaconda-2.0.1-Linux-x86_64.sh' 测试一下 ! -d /anaconda 01_install_conda: 命令:'bash Anaconda-2.0.1-Linux-x86_64.sh -b -f -p /anaconda' 测试一下 ! -d /anaconda 02_create_home: 命令:'mkdir -p /home/wsgi'
00_download_conda
只是下载 Anaconda。最新 Anaconda 版本下载链接见here。 test
命令是 EB 让您仅在测试失败时执行命令的方式...只是在开发时防止重复下载。01_install_conda
使用选项 -b -f -p /anaconda
安装 Anaconda,允许将其安装在指定目录,无需用户输入,如果已安装则跳过安装。02_create_home
创建缺少的目录。
最后 - 在你的 python 应用程序中使用 Anaconda:sys.path.append('/anaconda/lib/python2.7/site-packages')
干杯!
【讨论】:
为了使其正常工作,我必须将mkdir /home/wsgi
替换为mkdir -p /home/wsgi
(以防您第二次部署并且/home/wsgi
已经存在)并且我还在@987654337 部分添加了test: test ! -d /anaconda
@ 因为似乎 -f
选项不起作用。但除此之外做得很好,谢谢!
太棒了,真的很高兴它对你有用!我编辑了我的答案以包含您的更改。谢谢!以上是关于在 Amazon Elastic Beanstalk 上安装 Anaconda的主要内容,如果未能解决你的问题,请参考以下文章
Django 在 Amazon Elastic Beanstalk 上的迁移命令被杀死
Amazon Elastic Beanstalk 在运行任何命令时不断询问凭据
在 Amazon Elastic Beanstalk 上安装 Anaconda
Elastic Beanstalk 是不是支持 Amazon 的 Aurora DB?
在 Amazon Elastic Compute Cloud (Amazon EC2) 上托管 twitter 流 api 的优缺点是啥