使用cloud-init激活conda环境

Ray*_*han 5 python amazon-ec2 amazon-web-services cloud-init conda

我们正在尝试使用 userdata (我理解是基于 cloud-init 的)在 AWS EC2 实例上加载时运行批处理脚本。由于代码在 conda 环境中运行,我们尝试在运行 Python/Pandas 代码之前激活它。我们注意到 PATH 变量没有正确设置。(即使在制作映像之前已正确设置,并且在 SSH 进入实例后为所有用户正确设置)

我们尝试修改 shell 脚本中的路径,但没有任何效果。我们运行了以下代码:

#!/bin/bash
export=/opt/conda/bin:$PATH
which python
which conda
conda activate etl
Run Code Online (Sandbox Code Playgroud)

我们在运行之前和之后检查了 $PATH export=/opt/conda/bin(没有变化)。 which python返回错误的Python,并且which conda返回未找到。

之前和之后的 $PATH 是: /sbin:/usr/sbin:/bin:/usr/bin

Ray*_*han 1

经过数小时的工作后,所需的两条关键线路(无论您如何使用 Miniconda AMI)是:

#!/bin/bash
echo ". /opt/conda/etc/profile.d/conda.sh" >> ~/.bashrc #or the path to your conda.sh
source ~/.bashrc
conda activate <full path to environment>
Run Code Online (Sandbox Code Playgroud)

由于某种原因,cloud-init 会忽略所有其他修改路径的尝试