如何使用 bash 脚本在 conda 环境中 运行 原子和氢?

How can I run atom and hydrogen within a conda env using bash script?

我曾经有一个简单的 bash 脚本,我用它来激活 conda env 然后 运行 atom。然后,我可以使用 hydrogen 运行 python 代码,它可以自动看到 myenv 中的包。

之前的bash scrip是这样的:

#!/bin/bash

source activate myenv && 
atom

由于 conda > 4.4 那个 'source activate' 不存在了,我只好将脚本修改为:

#!/bin/bash

source /home/ubuntu/miniconda3/etc/profile.d/conda.sh &&
conda activate myenv &&
atom

但是,hydrogen 不再检测 myenv 并且 运行s 来自基本环境的代码由于基本环境中缺少包而导致错误。

当我用 spyder 替换 atom 时,上面的脚本工作正常并且 spyder 内核确实看到 myenv。

知道如何解决这个问题吗?

更新 1:

我做了更多调试。看来我的ipykernel并没有分配给激活环境中安装的内核,而是分配给了默认的ipykernel。

当我在激活环境中尝试 jupyter kernelspec list 时,我得到:

python3    /home/ubuntu/.local/share/jupyter/kernels/python3

但是在另一个系统上,我得到

/home/ubuntu/miniconda3/envs/myenv/share/jupyter/kernels/python3

这似乎是正确的内核。

知道如何解决这个问题吗?

更新二:

似乎 解决了更新 1 中的问题。然后,我能够使用接受的答案在所需的环境中加载原子,并从 ipykernel 中获得氢 运行环境

source activate 仍然像以前一样工作,尽管它不再是激活环境的首选方式。

如果你只是运行一个命令,试试

conda run -n <envname> <command>

可能首先获取配置文件。

我没试过,但一个潜在的问题是您在获取配置文件后使用 &&。我假设当你写这个问题时,行继续字符 (\) 在那里丢失了。只需将命令写入单独的行,以便在 bash 处理下一个命令之前加载配置文件。