使用 pyenv 激活 viralenv 失败

我跑:

pyenv activate new_app

然后我得到了:

Failed to activate virtualenv.


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

我试图遵循这个教程: https://tutorials.technology/tutorials/59-Start-a-flask-project-from-zero-building-api-rest.html

其他信息:

bash-3.2$ python --version
Python 3.6.0


bash-3.2$ pyenv version
3.6.0 (set by /Users/me/Projects/flask_api/.python-version)


bash-3.2$ pwd
/Users/me/Projects/flask_api


bash-3.2$ pyenv versions
system
3.5.1
3.5.1/envs/my_env_3_5_1
* 3.6.0 (set by /Users/me/Projects/flask_api/.python-version)
3.6.0/envs/new_app
flask_app
my_env_3_5_1
new_app


bash-3.2$ virtualenv --version
15.1.0


bash-3.2$ pyenv virtualenvs
3.5.1/envs/my_env_3_5_1 (created from /Users/me/.pyenv/versions/3.5.1)
3.6.0/envs/new_app (created from /Users/me/.pyenv/versions/3.6.0)
flask_app (created from /System/Library/Frameworks/Python.framework/Versions/2.7)
my_env_3_5_1 (created from /Users/me/.pyenv/versions/3.5.1)
new_app (created from /Users/me/.pyenv/versions/3.6.0)

我最近做了我的 .bash_profile它包含:

bash-3.2$ cat ~/.bash_profile
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
exec "$SHELL"
if which pyenv-virtualenv-init > /dev/null; then eval "$(pyenv virtualenv-init -)"; fi

我应该做什么才能正确启动 viralenv?

81072 次浏览

That

eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

should be in .bashrc, not .bash_profile. The latter is executed only by login shells, the former by all interactive shells.

  1. Add the lines below to your ~/.bash_profile or ~/.zprofile
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
  1. Restart shell or run the command:
source ~/.bash_profile

Note:

If you are using zsh shell (default for macOS Catalina and/or Big Sur) you have to use ~/.zprofile file rather than ~/.bash_profile

Within ~/.zshrc file:

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


eval "$(pyenv init --path)"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

Sadly the eval lines alone (as mentioned in the pyenv and pyenv-virtualenv instructions) did not work for me.

For me the below fixed my problem. I am using MacBook Pro thanks @Kalanos

eval "$(pyenv init --path)"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"