tmuxが原因でanacondaが別のpythonソースを使用する


11

さて、私はanaconda環境にいて、どのpythonを実行しました。私は得る

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

次に、tmuxを起動し、source activate env1を実行してから、どのpythonを取得するか

/home/comp/anaconda3/bin/python

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

回答:


15

解決策は、conda環境を非アクティブにし、次にtmuxを開始してから、tmux内の環境を再度アクティブにすることです。


2
奇妙な解決策ですが動作します...
LYu

それは確かに奇妙です。
ZirconCode 2018年

2
これは私のために働いたソリューションですので、私はupvotingだ、しかし、それは本当に遠い理想的なソリューションから
johnchase

2

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


2

この動作は、の~/.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を構成するのがさらに良いようです。リンクされた質問の回答を参照してください。


1

ランニング:

conda activate env1

の代わりに:

source activate env1

tmuxの中で働いていたとき。


1

tmuxは、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など)を再起動します。すべてが良いはずです!


0
nano ~/.bash_profile

次の行を追加します。

source deactivate env1
source activate env1

私のために働いた。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.