【问题标题】:Failed to activate virtualenv with pyenv无法使用 pyenv 激活 virtualenv
【发布时间】:2018-01-16 13:08:17
【问题描述】:

我跑:

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

我应该怎么做才能正确启动virtualenv?

【问题讨论】:

    标签: python bash virtualenv pyenv


    【解决方案1】:

    那个

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

    应该在.bashrc,而不是.bash_profile。后者仅由 login shell 执行,前者由所有交互式 shell 执行。

    【讨论】:

    • 完美运行。注意:如果你没有 .bashrc 目录来创建一个来执行这个命令
    • @phd:.bashrc 应该放在哪里?
    • ~,即$HOME
    • 这一切在 pyenv 2.0 中都发生了变化。现在变得很沮丧。
    • 当我尝试使用 pyenv 2.0 时,它说pyenv: no such command 'virtualenv-init'
    【解决方案2】:
    1. 将下面的行添加到您的~/.bash_profile~/.zprofile
    eval "$(pyenv init -)"  
    eval "$(pyenv virtualenv-init -)"
    
    1. 重启 shell 或运行命令:
    source ~/.bash_profile
    

    注意:

    如果你使用 zsh shellma​​cOS Catalina 和/或 Big Sur 的默认设置)你必须使用 ~/.zprofile 文件而不是比~/.bash_profile

    【讨论】:

    • 谢谢!这救了我.. 刚升级到 big sur 就遇到了这个
    【解决方案3】:

    ~/.zshrc 文件内:

    export PYENV_ROOT="$HOME/.pyenv"
    export PATH="$PYENV_ROOT/bin:$PATH"
    
    eval "$(pyenv init --path)"
    eval "$(pyenv init -)"
    eval "$(pyenv virtualenv-init -)"
    

    遗憾的是,单独的 eval 行(如 pyenv 和 pyenv-virtualenv 说明中所述)对我不起作用。

    【讨论】:

    • 还可以查看我的 zsh prompt gist,这样您就可以在没有 oh_my_zsh gist.github.com/aiqc/e55bfbf6b41d199015f79b9fcd7a46b3 的情况下设置提示样式
    • 双重初始化调用对我来说也是必要的,+1。
    • 只有这个答案在 macOS Monterey 上对我有用,谢谢@Kalanos!
    • 这对我有用。我必须在 ~/.bashrc 文件中包含所有 5 行,而不仅仅是 pyenv 说明中推荐的 3 行。
    • 有没有人提供某种解释的链接?这组命令对我有用,但我仍然不知道为什么。
    猜你喜欢
    • 2020-12-20
    • 2019-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-13
    • 2020-10-31
    • 2017-10-17
    相关资源
    最近更新 更多