tmux 识别了 Conda env 但仍然使用默认的 python

J_y*_*ang 10 python tmux anaconda

我在 Tmux 中使用 anaconda 环境时遇到问题。我在 OSX 上。

我先来

tmux 
Run Code Online (Sandbox Code Playgroud)

然后激活 Conda 环境:

conda activate myenv
Run Code Online (Sandbox Code Playgroud)

此时,我conda info显示了正确的活动环境和正确的位置。但是which python还是指向默认的/usr/bin/python

.bash_profile我安装时,anaconda 添加了这些行。所以我想我需要添加一些东西让终端找到正确的python路径?

# added by Anaconda3 5.3.1 installer
# >>> conda init >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$(CONDA_REPORT_ERRORS=false '/Users/jiajunyang/anaconda3/bin/conda' shell.bash hook 2> /dev/null)"
if [ $? -eq 0 ]; then
    \eval "$__conda_setup"
else
    if [ -f "/Users/username/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/Users/username/anaconda3/etc/profile.d/conda.sh"
        CONDA_CHANGEPS1=false conda activate base
    else
        \export PATH="/Users/username/anaconda3/bin:$PATH"
    fi
fi
Run Code Online (Sandbox Code Playgroud)

谢谢你的建议。

小智 11

以下适用于我在macOS 10.15 上使用 zsh

将以下行添加到您的~/.tmux.conf文件中

set -g default-command "/bin/zsh"
Run Code Online (Sandbox Code Playgroud)

如果您使用的是 以外的外壳zsh,我假设更改您正在使用的外壳的路径也将起作用。

  • 还可以使用 `set -g default-command "$SHELL"` 这样它就会选择您当前的 shell。 (4认同)
  • 我最后发现tmux使用了path环境变量。所以默认的 Python 排在第一位。所以解决方案资源路径位于/etc/profile。 (2认同)

H.L*_*.Li 1

我遇到过同样的问题。最后我发现 tmux 总是会调用你的 shell 的配置文件,而不仅仅是 rc.local 。因此,如果您像我一样使用 bash,它将调用 /etc/profile,其中将调用 path_helper。

为了解决这个问题,请更改/etc/profile为:

if [[ -z $TMUX ]] && [ -x /usr/libexec/path_helper ]; then
        eval `/usr/libexec/path_helper -s`
fi
Run Code Online (Sandbox Code Playgroud)

如果您使用的是 bash,请将 any更改export PATH=$PATH:/foo.bashrc

if [[ -z $TMUX ]]; then
  export PATH=$PATH:/foo
fi
Run Code Online (Sandbox Code Playgroud)

然后重新启动终端(例如 Iterm)。一切都应该很好!