Jas*_*son 4 python amazon-ec2 amazon-web-services anaconda amazon-elastic-beanstalk
我已将部署命令添加到我的Elastic Beanstalk部署中,该部署下载Anaconda安装程序并将其安装到/anaconda
.一切顺利,但似乎无法/anaconda/bin
按照Anaconda安装页面的建议正确修改我的实例的PATH .如果我通过SSH连接到一个实例并手动添加它,一切正常.但这显然不是正确的方法,因为机器将由EB自动添加.
所以我的问题是:如何在我的脚本中使用Anaconda?
更多细节:
/anaconda/bin
以我能想到的所有方式添加到系统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运行时,它在特定的import语句中失败?Jas*_*son 10
找到答案:import pandas
失败是因为matplotlib
未能初始化,因为它试图获取当前用户的主目录.由于应用程序是通过WSGI运行的,因此HOME变量设置为/home/wsgi
但该目录不存在.因此,通过部署命令创建此目录可修复此问题.
.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:
command:'bash Anaconda-2.0.1-Linux-x86_64.sh -b -f -p/anaconda'test
:test!-d/anaconda
02_create_home:
command:'mkdir -p/home/wsgi'
00_download_conda
只需下载Anaconda.见这里的最新版本Anaconda的下载链接.这些test
命令是EB允许您只在测试失败时执行命令的方式...只是防止在开发时双重下载.
01_install_conda
安装带有选项的Anaconda -b -f -p /anaconda
,允许在没有用户输入的情况下将其安装在指定的目录中,如果已经安装,则跳过安装.
02_create_home
创建缺少的目录.
最后 - 在你的python应用程序中使用Anaconda:sys.path.append('/anaconda/lib/python2.7/site-packages')
干杯!
归档时间: |
|
查看次数: |
2725 次 |
最近记录: |