在Amazon Elastic Beanstalk上安装Anaconda

时间:2014-07-23 21:32:13

标签: python amazon-web-services amazon-ec2 elastic-beanstalk anaconda

我已将部署命令添加到下载Anaconda安装程序的Elastic Beanstalk部署中,并将其安装到/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运行时在特定的import语句中失败?

1 个答案:

答案 0 :(得分:9)

找到答案: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版本下载链接,请参阅heretest命令是EB允许您仅在测试失败时执行命令的方式...只是防止在开发时双重下载。
01_install_conda安装带有选项-b -f -p /anaconda的Anaconda,允许在没有用户输入的情况下将其安装在指定目录中,如果已经安装,则跳过安装。
02_create_home创建缺少的目录。

最后 - 在你的python应用程序中使用Anaconda:sys.path.append('/anaconda/lib/python2.7/site-packages')
干杯!