conda некорректно работает с рыбьей раковиной

При использовании сред conda внутри оболочки fish на macOS python по-прежнему указывает на системный python (/usr/local/bin/python) вместо того, чтобы указывать на версию python, установленную средой conda (<PATH TO MINICONDA>/envs/<ENV NAME>/bin/python). Все остальное (например, ipython, jupyter) указывает на правильный путь, просто python ведет себя не так, как ожидалось. Как это исправить?

Подробности:

Выполнил следующие шаги в следующем порядке в macOS Mojave 10.14.3:

На этом этапе я могу успешно активировать и деактивировать среду conda внутри рыбы, но, как отмечено в начале этого вопроса, python не указывает, где это должно быть. Все остальное (например, ipython) работает правильно.

conf info возвращает (то же самое внутри bash и fish):

     active environment : base
    active env location : /Users/salamon/dev/miniconda3
            shell level : 1
       user config file : /Users/salamon/.condarc
 populated config files : 
          conda version : 4.6.11
    conda-build version : not installed
         python version : 3.7.1.final.0
       base environment : /Users/salamon/dev/miniconda3  (writable)
           channel URLs : https://repo.anaconda.com/pkgs/main/osx-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/free/osx-64
                          https://repo.anaconda.com/pkgs/free/noarch
                          https://repo.anaconda.com/pkgs/r/osx-64
                          https://repo.anaconda.com/pkgs/r/noarch
          package cache : /Users/salamon/dev/miniconda3/pkgs
                          /Users/salamon/.conda/pkgs
       envs directories : /Users/salamon/dev/miniconda3/envs
                          /Users/salamon/.conda/envs
               platform : osx-64
             user-agent : conda/4.6.11 requests/2.21.0 CPython/3.7.1 Darwin/18.2.0 OSX/10.14.3
                UID:GID : 501:20
             netrc file : None
           offline mode : False

Вызов which python в bash:

/Users/salamon/dev/miniconda3/bin/python

А в рыбе:

/usr/local/bin/python

Любая помощь будет очень признательна, спасибо.


person jjs    schedule 04.04.2019    source источник
comment
Даже при активации? Это странно. Является ли системный Python каким-то еще более высоким приоритетом в $PATH после активации? Не могли бы вы добавить conda info к своему вопросу?   -  person merv    schedule 05.04.2019
comment
Да хоть при активации, но только у рыбок. В bash при активации он указывает на правильную установку miniconda. Добавлен conda info и вывод which python в bash и fish. Обратите внимание, что вывод conda info идентичен в bash и fish. Спасибо.   -  person jjs    schedule 05.04.2019


Ответы (1)


python не указывает, где он должен

Проще говоря, это означает, что существует компонент пути, который включает питон перед тем, который вам нужен. В этом случае / usr / local / bin находится перед / envs // bin / в $ PATH (если он там вообще).

См. command -sa python, который должен печатать всех питонов, которые он может, и соответствующим образом скорректировать $ PATH, возможно, поместив тот, который вы хотите, в $ fish_user_paths, который добавляется к $ PATH.

person faho    schedule 05.04.2019
comment
Это работает! Чтобы быть более конкретным, проверка того, что /Users/salamon/dev/miniconda3/bin находится первым в $PATH, приводит к тому, что conda правильно указывает на питон загруженной среды для каждой среды. Спасибо! - person jjs; 05.04.2019