Answers:
解决方案似乎是停用conda环境,然后启动tmux,然后重新激活tmux内部的环境。
在启动Tmux会话后(我的conda没有任何活动的env),以下情况发生在我身上。
当我第一次在Tmux会话中执行以下操作时:
conda activate myEnv
我懂了
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'.
如果相反,我这样做:
source deactivate
conda activate myEnv
一切正常。which python
指向正确的路径。
此行为是由TMux采购~/.profile
而不是引起的~/.bashrc
。我的~/.profile
是这样的:
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
PATH="$HOME/.local/bin:$PATH"
fi
你可以看到,首先 ~/.bashrc
其来源和随后 ~/bin
与~/.local/bin
被前置。当我经历自己时,这会导致conda
启动。
解决的办法是注释掉在中操纵PATH的两个块~/.profile
。
编辑(2019/09/24):更好的方法似乎是配置TMux,使其不生成登录shell,而只是生成普通的shell。查看链接问题的答案。
我发现tmux将始终为您的shell调用配置文件,而不仅仅是rc。因此,如果像我一样使用bash,它将调用/ etc / profile,这将调用path_helper。
为了解决此问题,请更改/etc/profile
为:
if [[ -z $TMUX ]] && [ -x /usr/libexec/path_helper ]; then
eval `/usr/libexec/path_helper -s`
fi
如果你使用bash,也改变任何export PATH=$PATH:/foo
在.bashrc
以
if [[ -z $TMUX ]]; then
export PATH=$PATH:/foo
fi
然后重新启动终端(例如Iterm)。一切都应该很好!