shell 为什么conda无法在我的Azure机器学习启动脚本中工作

fgw7neuy  于 8个月前  发布在  Shell
关注(0)|答案(1)|浏览(96)

我正在尝试为Azure机器学习计算示例开发启动脚本,在测试时遇到了一些奇怪的问题。
我的代码:

#!/bin/bash
set -x
ENVIRONMENT=azureml_py38
conda --version
export HTTPS_PROXY=******
conda update -n base -c defaults conda -y
conda create -n custom_env python=3.10 -y
conda activate custom_env
conda install -y pip
conda install -y ipykernel
python -m ipykernel install --user --name custom_env --display-name "(custom_env)"
pip install wheel
pip install --upgrade pip
pip install --upgrade setuptools
pip install azureml-core
echo "$PWD"

对于所有的conda命令抛出这个错误/mnt/batch/tasks/shared/LS_root/mounts/clusters/ld-custom-compute-v002/code/Users/ME/custom_compute_startup.sh: line 4: conda: command not found
但是,如果我将其作为代码,我不会得到这些错误,但工作目录变为/home/azureuser。我希望这些命令运行在一个更独特的目录下,例如/home/azureuser/cloudfiles/code/users/me

#!/bin/bash
set -x
sudo -u azureuser -i <<'EOF' #key change
ENVIRONMENT=azureml_py38
conda --version
export HTTPS_PROXY=******
conda update -n base -c defaults conda -y
conda create -n custom_env python=3.10 -y
conda activate custom_env
conda install -y pip
conda install -y ipykernel
python -m ipykernel install --user --name custom_env --display-name "(custom_env)"
pip install wheel
pip install --upgrade pip
pip install --upgrade setuptools
pip install azureml-core
echo "$PWD"
EOF

这里有一个在线示例,Azure自己指出这是一种做非常相似的事情的方法。您会注意到脚本在运行某些命令之前不会使用sudo -u azureuser -i。https://github.com/Azure/azureml-examples/blob/main/setup/setup-ci/setup-custom-conda-env.sh

gz5pxeao

gz5pxeao1#

我用提供的bash代码复制了这个问题。

看起来第二个脚本正在工作,而不是将默认工作目录设置为/home/azureuser
一种可能的解决方案是通过获取Conda初始化脚本来设置必要的环境变量。这将确保conda命令在脚本中可用。下面是修改后的脚本版本:

#!/bin/bash
set -x
ENVIRONMENT=azureml_py38
export HTTPS_PROXY=******
source /anaconda/etc/profile.d/conda.sh  # Load conda into the script's environment

conda --version
conda update -n base -c defaults conda -y
conda create -n custom_env python=3.10 -y
conda activate custom_env
conda install -y pip
conda install -y ipykernel
python -m ipykernel install --user --name custom_env --display-name "(custom_env)"
pip install wheel
pip install --upgrade pip
pip install --upgrade setuptools
pip install azureml-core
echo "$PWD"

此时,当前目录将更改为所需路径。

使用第二个脚本的另一个可能的解决方案是在执行任何Conda命令之前更改目录。

#!/bin/bash
set -x
sudo -u azureuser -i <<'EOF'
ENVIRONMENT=azureml_py38
conda --version
export HTTPS_PROXY=******
cd /home/azureuser/cloudfiles/code/users/me
conda update -n base -c defaults conda -y
conda create -n custom_env python=3.10 -y
conda activate custom_env
conda install -y pip
conda install -y ipykernel
python -m ipykernel install --user --name custom_env --display-name "(custom_env)"
pip install wheel
pip install --upgrade pip
pip install --upgrade setuptools
pip install azureml-core
echo "$PWD"
EOF

这样,您将根据需要获得当前的工作目录。

相关问题