tmux menyebabkan anaconda menggunakan sumber python yang berbeda


11

Ok, jadi saya di lingkungan anaconda saya dan saya berlari python mana. saya mendapat

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

Sekarang jika saya memulai tmux, kemudian jalankan source activ env1, lalu python mana yang saya dapatkan

/home/comp/anaconda3/bin/python

meskipun lingkungan saya diaktifkan. Bagaimana saya bisa membuat anaconda melihat jalan yang sama di dalam tmux?

Jawaban:


15

Solusinya adalah dengan menonaktifkan lingkungan conda, kemudian memulai tmux, kemudian mengaktifkan kembali lingkungan di dalam tmux.


2
Solusi aneh tapi berhasil ...
LYu

Itu memang aneh.
ZirconCode

2
Saya kecewa karena ini adalah solusi yang bekerja untuk saya, namun ini sebenarnya jauh dari solusi ideal
johnchase

2

Berikut ini terjadi pada saya setelah memulai sesi Tmux (tanpa syarat memiliki env aktif).

Ketika saya pertama kali melakukannya di dalam sesi Tmux:

conda activate myEnv

saya mendapat

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'.

Jika sebaliknya saya lakukan:

source deactivate
conda activate myEnv

Semuanya bekerja dengan baik. which pythonmenunjuk ke jalur yang benar.


2

Perilaku ini disebabkan oleh sumber TMux ~/.profilebukan ~/.bashrc. Ini saya ~/.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

Anda dapat melihat bahwa pertama ~/.bashrc bersumber dan kemudian ~/bin dan ~/.local/binyang prepended . Seperti yang saya alami sendiri , ini menyebabkan condahickup.

Solusinya adalah dengan mengomentari dua blok yang memanipulasi PATH di ~/.profile.

Sunting (2019/09/24): Yang lebih baik lagi adalah mengkonfigurasi TMux sehingga tidak memunculkan shell login tetapi hanya yang normal. Lihat jawaban untuk pertanyaan terkait.


1

Berlari:

conda activate env1

Dari pada:

source activate env1

Ketika di dalam tmux bekerja untuk saya.


1

Saya menemukan bahwa tmux akan selalu memanggil profil untuk shell Anda, bukan hanya rc. Jadi jika Anda menggunakan bash seperti yang saya lakukan, ia akan memanggil / etc / profile, yang akan memiliki panggilan ke path_helper.

Untuk memperbaiki ini, ubah /etc/profileke:

if [[ -z $TMUX ]] && [ -x /usr/libexec/path_helper ]; then
        eval `/usr/libexec/path_helper -s`
fi

Jika Anda menggunakan bash, juga mengubah export PATH=$PATH:/foodi .bashrcke

if [[ -z $TMUX ]]; then
  export PATH=$PATH:/foo
fi

kemudian Anda me-restart terminal (misalnya Iterm). Semuanya harus baik!


0
nano ~/.bash_profile

Tambahkan baris berikut:

source deactivate env1
source activate env1

bekerja untukku.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.