Не удалось активировать virtualenv через шеллскрипт - PullRequest
0 голосов
/ 04 июля 2018

Я пытаюсь активировать свою среду pyenv-virtualenv с помощью очень простого сценария bash, подобного этому.

set -e
pyenv activate myenv

Но я не могу активировать мой env с ошибкой ниже:

Failed to activate virtualenv.

Perhaps pyenv-virtualenv has not been loaded into your shell properly.
Please restart current shell and try again.

Я могу активировать его в командной строке, так что я думаю, что это связано с моей оболочкой.

Я использую fish shell, но он запускается после прочтения $PATH настроек в bash shell. Я показываю вам мои настройки.

.bash_profile:

export LANG="ja_JP.UTF-8"

export XDG_CONFIG_HOME="$HOME/.config"

export PATH="/sbin"
export PATH="/usr/sbin:$PATH"
export PATH="/bin:$PATH"
export PATH="/usr/bin:$PATH"
export PATH="/usr/local/bin:$PATH"

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"

exec fish

И мой config.fish:

status --is-interactive; and source (pyenv init -|psub)
status --is-interactive; and source (pyenv virtualenv-init -|psub)

Что не так?

Я использую:

  • OS: OS X 10.13.5
  • fish: v2.7.1
  • pyenv: v1.2.5
  • pyenv-virtualenv: v1.1.3

1 Ответ

0 голосов
/ 04 июля 2018

Я полагаю, причина в том, что вы инициализируете PyEnv в среде оболочки Fish, но затем вызываете PyEnv в среде оболочки Bash (через ваш скрипт Bash). Чтобы решить эту проблему, вы можете попробовать любое из следующих возможных решений:

  1. Инициализация PyEnv в вашей среде Bash (в дополнение к вашей среде Fish)
  2. Напиши свой скрипт в Fish вместо Bash

Так как PyEnv, похоже, лучше поддерживает Bash, чем Fish, давайте сосредоточимся на варианте # 1. Шаг 3 руководства по установке PyEnv предлагает следующую команду для добавления инициализации PyEnv в ~/.bash_profile:

$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bash_profile

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...