系统 python 版本激活而不是本地 pyenv 版本

System python version active instead of local pyenv version

如何检查激活虚拟环境后是否使用了正确的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

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

如何使用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
  • 没有设置 Python 的 local 版本
  • 但是,根据上面的 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