python - 无法从 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
到文件顶部以防万一,但没有骰子。
解决方案
感谢@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 脚本添加其他内容不起作用,但这仍然是一个很棒的简单解决方案。是的,我是这个东西的新手。
推荐阅读
- asp.net-mvc - 在 MVC 中为一个视图使用两种模型,一种用于获取数据,另一种用于向控制器发送数据
- json - Json解析没有得到第二个花括号内的值
- ubuntu - 在 ubuntu 中将 .p12 转换为 .pem
- django - 使用 django 和 nginx 将数据库从 sqlite 更改为 postgres 时出现 500 内部服务器错误
- php - 当我加载网站时如何通过此错误消息
- regex - 匹配正则表达式中的部分
- mysql - 通过检查归档是否包含值来过滤集合
- php - 如何在 laravel 中使用 stackoverflow 登录
- mysql - 从特定日期的类别计数中查找百分比
- javascript - 即使应用程序关闭,是否可以保持订阅运行?