首页 > 解决方案 > 无法从 shell 脚本激活 conda env

问题描述

我已经尝试了我在 SO 上看到的一切来让它工作,但到目前为止一切都失败了。使用 macOS Big Sur 11.6,在终端中 bash(不是 zsh)。

我正在尝试创建一个安装文件并执行sh setup.sh它来设置环境,安装 python,然后激活它。没有什么花哨。手动操作可以正常工作,但是一旦我将其放入 shell 脚本中,它将无法正常工作。我从一个空的项目文件夹中运行这个脚本。

当前脚本:

conda create -n MASTER python=3.8.5 -y

conda activate MASTER

是的,开始就是这么简单。我注释掉了其他 pip 安装,直到它正常工作。

我尝试运行:bash -i setup.sh但它仍然没有激活。我没有收到任何错误,但我仍然卡在(base).

我尝试使用 source:source /opt/anaconda3/etc/profile.d/conda.sh在脚本开头和/或激活之前,仍然无法正常工作。再次没有错误,但卡在(base).

我尝试eval $(conda shell.bash hook)在脚本开始和尝试激活环境之前使用:,但它失败了。这次我得到错误:

CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
To initialize your shell, run

    $ conda init <SHELL_NAME>

Currently supported shells are:
  - bash
  - fish
  - tcsh
  - xonsh
  - zsh
  - powershell

但如果我运行conda init bash(在终端或脚本本身),它会输出:

no change     /opt/anaconda3/condabin/conda
no change     /opt/anaconda3/bin/conda
no change     /opt/anaconda3/bin/conda-env
no change     /opt/anaconda3/bin/activate
no change     /opt/anaconda3/bin/deactivate
no change     /opt/anaconda3/etc/profile.d/conda.sh
no change     /opt/anaconda3/etc/fish/conf.d/conda.fish
no change     /opt/anaconda3/shell/condabin/Conda.psm1
no change     /opt/anaconda3/shell/condabin/conda-hook.ps1
no change     /opt/anaconda3/lib/python3.8/site-packages/xontrib/conda.xsh
no change     /opt/anaconda3/etc/profile.d/conda.csh
no change     /Users/liquidRock/.bash_profile
No action taken.

我尝试做/opt/anaconda3/bin/conda activate MASTER这也提示我做conda init bash

甚至尝试添加#!/bin/bash到文件顶部以防万一,但没有骰子。

标签: pythonbashmacosshellanaconda

解决方案


感谢@fravadona 提供了最简单的解决方案。

只需使用source而不是执行脚本sh。‍♂️</p>

最终 setup.sh 脚本(带有我的初步 pip 安装):

# env & python
conda create -n MASTER python=3.8.5 -y
conda activate MASTER

# pip installs
pip install cmake
pip install --upgrade pip setuptools wheel
pip install opencv-python==4.2.0.32
pip install argparse
pip install datetime
pip install colorama
pip install python-dotenv
pip install python-dotenv[cli]

如此执行:

$ source setup.sh

Anaconda 创建环境,安装 python 和依赖项,激活环境,然后 pip 安装附加依赖项。

仍然不确定为什么通过向 shell 脚本添加其他内容不起作用,但这仍然是一个很棒的简单解决方案。是的,我是这个东西的新手。


推荐阅读