【问题标题】:System python version active instead of local pyenv version系统 python 版本激活而不是本地 pyenv 版本
【发布时间】:2021-05-10 13:40:25
【问题描述】:

激活虚拟环境后如何检查是否使用了正确的python版本?我尝试了 which python3 和 which python 但两个输出都指示系统 python 版本而不是本地 pyenv 版本。它还在使用我的本地版本还是我的安装有问题?

这是命令行输出。

Documents/DataStuff/pdf_tools via ???? v3.9.5
❯ python --version
zsh: command not found: python

Documents/DataStuff/pdf_tools via ???? v3.9.5
❯ python3 --version
Python 3.9.5

Documents/DataStuff/pdf_tools via ???? v3.9.5
❯ pyenv global
3.8.5

Documents/DataStuff/pdf_tools via ???? v3.9.5
❯ pyenv local
3.7.5

Documents/DataStuff/pdf_tools via ???? v3.9.5
❯ python3 -m venv .venv

Documents/DataStuff/pdf_tools via ???? v3.9.5 took 31s
❯ source .venv/bin/activate
(.venv)  

Documents/DataStuff/pdf_tools via ???? v3.9.5 (.venv)
❯ which python
/mnt/c/Users/Saša/Documents/DataStuff/pdf_tools/.venv/bin/python
(.venv)  

Documents/DataStuff/pdf_tools via ???? v3.9.5 (.venv)
❯ python --version
Python 3.9.5
(.venv)  

Documents/DataStuff/pdf_tools via ???? v3.9.5 (.venv)
❯ python3 --version
Python 3.9.5
(.venv)  

以下是一些系统信息:
系统:windows-linux-subsystem2
包管理器:Homebrew 3.1.5
Python 版本:3.9.5
Pyenv 版本:1.2.27

安装步骤:

  1. 通过自制软件安装 python 和 pyenv。
brew install python-tk@3.9
brew install pyenv
  1. 通过 pyenv 安装 python 版本 3.7.5 和 3.8.5。
pyenv install 3.7.5
pyenv install 3.8.5
  1. 将 pyenv 全局设置为 3.8.5(尚不支持 3.9.5)和本地设置为 3.7.5
pyenv global 3.8.5
pyenv local 3.7.5
  1. 创建虚拟环境
python3 -m venv .venv
  1. 激活虚拟环境
source .venv/bin/activate

【问题讨论】:

    标签: python-3.x homebrew windows-subsystem-for-linux pyenv


    【解决方案1】:

    我会尽量给你一个彻底的演练。

    pyenv global/local如何解析python

    • 我正在处理一个空文件夹~/py-version-example/
    • 我使用pyenv(版本1.2.26)来管理我系统中所有Python的多个安装
    py-version-example $ pyenv --version
    pyenv 1.2.26
    
    • 目前,我有以下 Python 版本可供pyenv 在我的项目中“设置”
    • 版本3.9.2pyenv global 配置为默认值
    • 此版本号存储在“全局”文件~/.pyenv/version
    py-version-example $ pyenv versions
      system
    * 3.9.2 (set by /Users/***/.pyenv/version)
      3.9.3
      3.9.4
      miniforge3-4.9.2
    
    • 由于这是一个全新的项目,pyenv没有设置local版本的Python
    • 但是,根据上面的pyenv global,Python“可见”的版本将是3.9.2
    • 此版本的 Python 解释器由 pyenv 安装和管理的垫片解析
    py-version-example $ pyenv local
    pyenv: no local version configured for this directory
    
    py-version-example $ pyenv global
    3.9.2
    
    py-version-example $ python -V
    Python 3.9.2
    
    py-version-example $ which python
    /Users/***/.pyenv/shims/python
    
    py-version-example $ pyenv version
    3.9.2 (set by /Users/***/.pyenv/version)
    

    设置新项目

    • 现在我要将 Python 的 local 版本设置为 3.9.4
    • 您会看到将使用完全相同的垫片 (/Users/***/.pyenv/shims/python)
    • 但是,这次版本将来自项目文件夹内的文件.python-version
    py-version-example $ pyenv local 3.9.4
    
    py-version-example $ pyenv local
    3.9.4
    
    py-version-example $ python -V
    Python 3.9.4
    
    py-version-example $ which python
    /Users/***/.pyenv/shims/python
    
    py-version-example $ pyenv version
    3.9.4 (set by /Users/***/py-version-example/.python-version)
    

    设置虚拟环境

    • 现在我要在我的项目文件夹中设置并激活一个新的虚拟环境
    • 根据上述所有项目,此虚拟环境将从local“继承”版本3.9.4
    • 但是,这一次您应该看到 Python 解释器来自虚拟环境,而不再来自 pyenv shim:
    py-version-example $ python -m venv .venv
    
    py-version-example $ source .venv/bin/activate
    
    (.venv) py-version-example $ python -V
    Python 3.9.4
    
    (.venv) py-version-example $ which python
    /Users/***/py-version-example/.venv/bin/python
    

    【讨论】:

      最近更新 更多