python - 使用 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
我们在运行前后检查了 $PATH export=/opt/conda/bin
(没有变化)。 which python
返回错误的python,并which conda
返回未找到。
$PATH 之前和之后是:
/sbin:/usr/sbin:/bin:/usr/bin
解决方案
经过数小时的工作,需要的两条关键线路(无论您使用 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>
出于某种原因,cloud-init 会忽略所有其他修改路径的尝试