tmux đang khiến Anaconda sử dụng một nguồn trăn khác


11

Ok, vì vậy tôi đang ở trong môi trường anaconda của tôi và tôi đã chạy con trăn nào. tôi có

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

Bây giờ nếu tôi bắt đầu tmux, sau đó chạy mã kích hoạt env1, sau đó là python, tôi nhận được

/home/comp/anaconda3/bin/python

mặc dù tôi đã kích hoạt môi trường của tôi. Làm thế nào tôi có thể làm cho Anaconda nhìn thấy con đường tương tự bên trong tmux?

Câu trả lời:


15

Giải pháp dường như là hủy kích hoạt môi trường conda, sau đó khởi động tmux, sau đó kích hoạt lại môi trường bên trong tmux.


2
Giải pháp lạ nhưng công trình ...
Lyu

Thật là kỳ lạ.
Mã hóa

2
Tôi ủng hộ vì đây là giải pháp hiệu quả với tôi, tuy nhiên nó thực sự là một giải pháp lý tưởng
johnchase

2

Điều sau đây xảy ra với tôi sau khi bắt đầu một phiên Tmux (không có conda có bất kỳ env hoạt động nào).

Khi tôi lần đầu tiên làm trong phiên Tmux:

conda activate myEnv

tôi có

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

Nếu thay vào đó tôi làm:

source deactivate
conda activate myEnv

Tất cả mọi thứ hoạt động tốt. which pythonchỉ vào đường dẫn chính xác.


2

Hành vi này được gây ra bởi nguồn TMux ~/.profilethay vì ~/.bashrc. Của tôi ~/.profilelà thế này

# 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

Bạn có thể thấy rằng đầu tiên ~/.bashrc là nguồn gốc và sau đó ~/bin~/.local/binđược chuẩn bị trước . Như tôi đã trải nghiệm bản thân , điều này gây ra condahickup.

Giải pháp sẽ là bình luận ra hai khối thao túng PATH ~/.profile.

Chỉnh sửa (2019/09/24): Một cấu hình thậm chí còn tốt hơn là cấu hình TMux sao cho nó không sinh ra một vỏ đăng nhập mà chỉ là một vỏ bình thường. Xem câu trả lời cho câu hỏi liên kết.


1

Đang chạy:

conda activate env1

Thay vì:

source activate env1

Khi bên trong tmux làm việc cho tôi.


1

Tôi thấy rằng tmux sẽ luôn gọi hồ sơ cho vỏ của bạn, không chỉ là RC. Vì vậy, nếu bạn đang sử dụng bash như tôi, nó sẽ gọi / etc / profile, sẽ có một cuộc gọi đến path_helper.

Để khắc phục điều này, hãy đổi /etc/profilethành:

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

Nếu bạn đang sử dụng bash, cũng thay đổi bất kỳ export PATH=$PATH:/footrong .bashrcđể

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

sau đó bạn khởi động lại thiết bị đầu cuối (ví dụ Iterm). Mọi thứ nên tốt đẹp!


0
nano ~/.bash_profile

Thêm các dòng sau:

source deactivate env1
source activate env1

đã làm cho tôi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.