проблема pyenv и anaconda с 'export PATH'

У меня есть pyenv + virtualenv и Anaconda, установленный в моей системе, для управления виртуальными средами.

Мой файл .zshrc выглядит так:

# Load pyenv automatically:
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

# added by Anaconda3 4.2.0 installer
export PATH="$HOME/anaconda3/bin:$PATH"

В данной папке я установил локальную pyenv виртуальную среду с

$ pyenv local test-env

Перечисление pyenv виртуальных окружений в этой папке приводит к следующему:

$ pyenv versions
system
2.7.12
2.7.12/envs/test-env
* test-env (set by /home/<path>/.python-version)

Но когда я загружаю python вместо открытия сеанса с Python v2.7.12 (как и следовало ожидать, поскольку виртуальная среда pyenv загружена), я получаю:

$ python
Python 3.5.2 |Anaconda custom (64-bit)| (default, Jul  2 2016, 17:53:06) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 

Итак, очевидно, что платформа Anaconda находится между моей pyenv виртуальной средой. Перечисление conda сред показывает:

$ conda-env list
# conda environments:
#
root                  *  /home/<user>/anaconda3

Если я закомментирую строку export PATH="$HOME/anaconda3/bin:$PATH", pyenv работает должным образом.

Есть ли способ сохранить обоих этих менеджеров, не конфликтуя друг с другом?


person Gabriel    schedule 03.12.2016    source источник


Ответы (1)


Ответ, по-видимому, был скрыт в пункте 3 инструкций pyenv Basic GitHub Checkout:

Убедитесь, что eval "$(pyenv init -)" находится ближе к концу файла конфигурации оболочки, поскольку он управляет PATH во время инициализации.

Итак, решение заключалось в том, чтобы переместить эту строку в конец файла .zshrc, например:

# added by Anaconda3 4.2.0 installer
export PATH="$HOME/anaconda3/bin:$PATH"

# Load pyenv automatically:
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
person Gabriel    schedule 19.02.2017