Проблема с pyenv и anaconda при экспорте 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 virtual-envs в этой папке приводит к:

$ 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 работает как положено.

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

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 -)"
Другие вопросы по тегам