Установленные через pyenv переводчики не добавляются в $ PATH - PullRequest
1 голос
/ 05 июня 2019

Я не могу понять, почему pyenv не работает.

Кажется, моя переменная $PATH не была правильно обновлена ​​pyenv, и поэтому ни один из интерпретаторов не был установлен через pyenvможет быть найден.Например, для Python версии 3.6.8:

$ pyenv versions
  system
* 3.4.10 (set by /Users/cglacet/.pyenv/version)
* 3.5.7 (set by /Users/cglacet/.pyenv/version)
* 3.6.8 (set by /Users/cglacet/.pyenv/version)
* 3.7.3 (set by /Users/cglacet/.pyenv/version)
* 3.8-dev (set by /Users/cglacet/.pyenv/version)

$ pyenv which python3.6
/Users/cglacet/.pyenv/versions/3.6.8/bin/python3.6

$(pyenv which python3.6) --version
Python 3.6.8

$ pyenv shell
pyenv: no shell-specific version configured

$ pyenv local
pyenv: no local version configured for this directory

До тех пор, пока здесь все выглядит отлично, но:

$ python3.6 --version
-bash: python3.6: command not found

$ python --version
Python 3.7.0

Если я проверю свою переменную окружения PATH, я могуНе вижу пути в форме /Users/cglacet/.pyenv/versions/3.x.x/bin.

Обратите внимание, что 3.7.0 - это версия Python, которую я имел до установки pyenv (системная).Я ожидаю, что у нас будет 3.6 (все версии установлены через pyenv), что должно быть как раз тогда, когда я активировал его как глобальный интерпретатор, как показано ранее.Ожидаемое поведение:

$ python3.6 --version
Python 3.6.8

1 Ответ

1 голос
/ 06 июня 2019

После небольшого копания я обнаружил, что при установке не удалось отредактировать мой .bash_profile. Проблема в том, что pyenv сам по себе не полагается на эти дополнения, и поэтому ошибка молчит (у вас просто нет переводчиков на вашем пути).

Если вы в этом случае вам придется запустить эту часть установки вручную и , добавьте следующее в ~/.bash_profile (желательно добавить этот новый путь, чтобы он приходит до того, как ваш системный путь к Python, другими словами, добавляет это в конец вашего профиля bash):

export PATH=$(pyenv root)/shims:$PATH

Это решает проблему, с которой я столкнулся (поскольку каталог $(pyenv root)/shims содержит все интерпретаторы, которые вы установили через pyenv). Но вы можете захотеть иметь полный набор функций, которые предлагает pyenv (например, автозаполнение команд), что (теоретически) может быть сделано путем добавления следующего к вашему .bash_profile вместо экспорта PATH:

eval "$(pyenv init -)"

Но для меня это не сработало, так как pyenv init выдал какой-то неисправный код (отсутствует объявление function), с другой стороны, вы можете использовать следующее, и оно должно работать (лучше):

eval "$(pyenv init - | sed 's:^pyenv() :function pyenv():')"

Я до сих пор не представляю, почему установка не удалась в моей системе, если кто-то может подсказать, что это было бы интересно (и это, вероятно, заслуживает исправления, потому что я, вероятно, буду не единственным, кто столкнулся с этой проблемой).

...