无法从 shell 脚本激活 conda env

liq*_*ock 5 python macos bash shell anaconda

我已经尝试了我在 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
Run Code Online (Sandbox Code Playgroud)

是的,开始就是这么简单。我注释掉了其他 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
Run Code Online (Sandbox Code Playgroud)

但如果我运行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.
Run Code Online (Sandbox Code Playgroud)

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

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

liq*_*ock 4

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

\n

source只需使用而不是执行脚本即可sh。\xe2\x80\x8d\xe2\x99\x82\xef\xb8\x8f

\n

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

\n
# env & python\nconda create -n MASTER python=3.8.5 -y\nconda activate MASTER\n\n# pip installs\npip install cmake\npip install --upgrade pip setuptools wheel\npip install opencv-python==4.2.0.32\npip install argparse\npip install datetime\npip install colorama\npip install python-dotenv\npip install python-dotenv[cli]\n\n
Run Code Online (Sandbox Code Playgroud)\n

如此执行:

\n
$ source setup.sh\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

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

\n