在命令行直接输入conda activate my_env可以直接进入该环境。但如果将该命令放到bash脚本中,再运行该脚本时会提示错误:
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
See 'conda init --help' for more information and options.
IMPORTANT: You may need to close and restart your shell after running 'conda init'.
这是因为bash未正确配置conda启动项。尝试了github的issues#7980Can't execute conda activate from bash script #7980讨论中的诸多解决方案,发现stuarteberg的方案最为可行:
echo "export -f conda" >> ~/.bashrc
echo "export -f __conda_activate" >> ~/.bashrc
echo "export -f __conda_reactivate" >> ~/.bashrc
echo "export -f __conda_hashr" >> ~/.bashrc
但是再次运行时又提示了新的错误:
main: line 5: __conda_exe: command not found
还是bashrc没配置好。
参考stackoverflow的讨论贴Conda 4.10.3 and Snakemake >5 "__conda_exe" problem需要再添加两行:
echo "export -f __add_sys_prefix_to_path" >> ~/.bashrc
echo "export -f __conda_exe" >> ~/.bashrc
这样就没问题了,直接在scripts中输入conda activate my_env并运行该script时可以获得和在命令行直接输入该命令一样的效果。