tmux により、Anaconda は別の Python ソースを使用するようになります

tmux により、Anaconda は別の Python ソースを使用するようになります

さて、私はアナコンダ環境でwhich pythonを実行しました。

/home/comp/anaconda3/envs/env1/bin/python

tmuxを起動し、source activate env1を実行してからwhich pythonを実行すると、

/home/comp/anaconda3/bin/python

環境はアクティブ化されていますが、anaconda に tmux 内の同じパスを認識させるにはどうすればよいですか?

答え1

解決策としては、conda 環境を非アクティブ化してから tmux を起動し、tmux 内で環境を再アクティブ化することのようです。

答え2

私も同じ問題を抱えていましたが、 にロードするたびに Conda を非アクティブ化およびアクティブ化する必要があるため、どの解決策も気に入りませんでしたtmux。そのため、代わりに以下のものを に追加しました.tmux.conf

重要な編集: このコードは私の場合は機能します。現在、zsh シェルを実行しており、ここに設定が保存されています。標準シェルは異なる場合があります。シェルの場所を見つけるには、 コマンドを使用しecho "$SHELL"/bin/zsh私の回答の を独自のシェル パスに置き換えてください。

set -g default-command "/bin/zsh"

完了したら、.tmux.confファイルをリソースするだけで変更が有効になります。これにより、 Conda を含むtmuxすべての設定を読み込むことができるようになります.bash_profile

答え3

~/.profileこの動作は、 の代わりにTMux ソースによって発生します~/.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 を操作する 2 つのブロックをコメント アウトすることです~/.profile

編集 (2019/09/24):さらに良い方法は、ログイン シェルではなく通常のシェルを生成するように TMux を構成することです。リンクされた質問の回答を参照してください。

答え4

Tmux セッションを開始した後 (conda にアクティブな環境がない場合)、次のことが起こります。

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正しいパスを指しています。

関連情報