python - Pyenv 没有选择其他 python 安装

标签 python zsh pyenv

我正在使用 pyenv 来管理 python 安装和虚拟环境。我的 Mac (Catalina) 上有几个 python 安装。

  • 系统python(usr/bin中的python 2.7)
  • usr/bin 中的 python 3.9(来自 python.org/downloads 的默认安装程序)
  • /opt/anaconda3/bin/python3 中的 python 3.9(来自 https://www.anaconda.com/products/individual)

  • 对于一个项目,我需要 python 3.6。我知道 conda 提供了使用特定 python 版本创建虚拟环境的可能性,但我想尝试使用 pyenv 来管理不同的 python 安装。
    我关注了 installation guide并遵循基本的 git check out 步骤(对于 zsh)。
    安装后,我可以找到.pyenv在我的主目录中,一切似乎都没问题。我使用 pyenv 成功安装了 python 3.6。当我跑 pyenv versions为了列出我所有的 python 安装(并切换到我的 conda 安装作为测试),输出不包含我的任何原始 python 安装(见上面的列表)。输出:
    ▶ pyenv versions
    * system (set by /Users/DVerb5/.pyenv/version)
      3.6.12
    
    我怎样才能让 pyenv 也找到我的其他 python 安装?我试着做一些研究,这似乎是可能的。我看了下面的两页,看起来很有希望,但无法弄清楚。
  • Installing anaconda with pyenv, unable to configure virtual environment
  • https://wilsonmar.github.io/pyenv/

  • 前面提到我使用zsh,这是我的.zshrc的内容
    # If you come from bash you might have to change your $PATH.
    # export PATH=$HOME/bin:/usr/local/bin:$PATH
    
    # Path to your oh-my-zsh installation.
    export ZSH="/Users/DVerb5/.oh-my-zsh"
    
    # Set name of the theme to load --- if set to "random", it will
    # load a random theme each time oh-my-zsh is loaded, in which case,
    # to know which specific one was loaded, run: echo $RANDOM_THEME
    # See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
    ZSH_THEME="avit"
    
    # Set list of themes to pick from when loading at random
    # Setting this variable when ZSH_THEME=random will cause zsh to load
    # a theme from this variable instead of looking in $ZSH/themes/
    # If set to an empty array, this variable will have no effect.
    # ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )
    
    # Uncomment the following line to use case-sensitive completion.
    # CASE_SENSITIVE="true"
    
    # Uncomment the following line to use hyphen-insensitive completion.
    # Case-sensitive completion must be off. _ and - will be interchangeable.
    # HYPHEN_INSENSITIVE="true"
    
    # Uncomment the following line to disable bi-weekly auto-update checks.
    # DISABLE_AUTO_UPDATE="true"
    
    # Uncomment the following line to automatically update without prompting.
    # DISABLE_UPDATE_PROMPT="true"
    
    # Uncomment the following line to change how often to auto-update (in days).
    # export UPDATE_ZSH_DAYS=13
    
    # Uncomment the following line if pasting URLs and another text is messed up.
    # DISABLE_MAGIC_FUNCTIONS="true"
    
    # Uncomment the following line to disable colors in ls.
    # DISABLE_LS_COLORS="true"
    
    # Uncomment the following line to disable the auto-setting terminal title.
    # DISABLE_AUTO_TITLE="true"
    
    # Uncomment the following line to enable command auto-correction.
    # ENABLE_CORRECTION="true"
    
    # Uncomment the following line to display red dots whilst waiting for completion.
    # COMPLETION_WAITING_DOTS="true"
    
    # Uncomment the following line if you want to disable marking untracked files
    # under VCS as dirty. This makes repository status check for large repositories
    # much, much faster.
    # DISABLE_UNTRACKED_FILES_DIRTY="true"
    
    # Uncomment the following line if you want to change the command execution time
    # stamp shown in the history command output.
    # You can set one of the optional three formats:
    # "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
    # or set a custom format using the strftime function format specifications,
    # see 'man strftime' for details.
    # HIST_STAMPS="mm/dd/yyyy"
    
    # Would you like to use another custom folder than $ZSH/custom?
    # ZSH_CUSTOM=/path/to/new-custom-folder
    
    # Which plugins would you like to load?
    # Standard plugins can be found in $ZSH/plugins/
    # Custom plugins may be added to $ZSH_CUSTOM/plugins/
    # Example format: plugins=(rails git textmate ruby lighthouse)
    # Add wisely, as too many plugins slow down shell startup.
    plugins=(
        git
        zsh-syntax-highlighting)
    
    ZSH_DISABLE_COMPFIX=true
    
    source $ZSH/oh-my-zsh.sh
    
    # User configuration
    
    # export MANPATH="/usr/local/man:$MANPATH"
    
    # You may need to manually set your language environment
    export LANG=en_US.UTF-8
    
    # Preferred editor for local and remote sessions
    # if [[ -n $SSH_CONNECTION ]]; then
    #   export EDITOR='vim'
    # else
    #   export EDITOR='mvim'
    # fi
    
    # Compilation flags
    # export ARCHFLAGS="-arch x86_64"
    
    # Set personal aliases, overriding those provided by oh-my-zsh libs,
    # plugins, and themes. Aliases can be placed here, though oh-my-zsh
    # users are encouraged to define aliases within the ZSH_CUSTOM folder.
    # For a full list of active aliases, run `alias`.
    #
    # Example aliases
    # alias zshconfig="mate ~/.zshrc"
    # alias ohmyzsh="mate ~/.oh-my-zsh"
    
    # >>> conda initialize >>>
    # !! Contents within this block are managed by 'conda init' !!
    ##__conda_setup="$('/opt/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
    ##if [ $? -eq 0 ]; then
    ##    eval "$__conda_setup"
    ##else
    ##    if [ -f "/opt/anaconda3/etc/profile.d/conda.sh" ]; then
    ##        . "/opt/anaconda3/etc/profile.d/conda.sh"
    ##    else
    ##        export PATH="/opt/anaconda3/bin:$PATH"
    ##    fi
    ##fi
    ##unset __conda_setup
    # <<< conda initialize <<<
    
    
    alias code="/Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin/code"
    
    export PYENV_ROOT="$HOME/.pyenv"
    export PATH="$PYENV_ROOT/bin:$PATH"
    if command -v pyenv 1>/dev/null 2>&1; then
      eval "$(pyenv init -)"
    fi
    
    
    这就是我的 PATH 的样子
    echo $PATH
    /Users/DVerb5/.pyenv/bin:/Users/DVerb5/.pyenv/shims:/Users/DVerb5/.pyenv/bin:/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/anaconda3/bin```
    
    另外我还注意到which pyenv不起作用。它返回以下内容。 (不知道有没有关系)
    ▶ which pyenv
    pyenv () {
        local command
        command="${1:-}"
        if [ "$#" -gt 0 ]
        then
            shift
        fi
        case "$command" in
            (rehash | shell) eval "$(pyenv "sh-$command" "$@")" ;;
            (*) command pyenv "$command" "$@" ;;
        esac
    } 
    

    最佳答案

    如果您通过 pyenv 本身安装它,它将起作用。例如,如果您运行 pyenv install 3.7.4然后你会得到 3.7.4 由 pyenv 管理。我不知道有什么方法可以让 pyenv 找到以前安装的版本,但是添加新版本真的很容易。

    关于python - Pyenv 没有选择其他 python 安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65637759/

    相关文章:

    bash - 如何在 zsh 脚本中提示是/否样式确认?

    linux - 设置变量时找不到 bash 命令

    python - 将类别列转换为 Python 中的一个字符串列

    python - 无法加载pickle文件

    docker - 可以以某种方式阻止 'docker-compose down'在生产中运行吗?

    python - 如何从正在运行的脚本中判断哪个 Python 解释器正在运行它?

    python - pyenv 和 anaconda 问题 'export PATH'

    python - 如何计算循环中python列表中字典的数量?

    Python pandas从mysql获取最大值

    使用pyenv安装python后找不到python3命令