跳转到主要内容

pyenv安装的解析器虚拟环境Python发现插件

项目描述

virtualenv-pyenv

一个为virtualenv提供的pyenv安装的解析器Python发现插件

安装

pip install virtualenv-pyenv

使用

可以通过以下方式指定Python发现机制:

  • CLI选项--discovery

    virtualenv --discovery pyenv -p 3.10 testenv
    
  • 环境变量VIRTUALENV_DISCOVERY

    export VIRTUALENV_DISCOVERY=pyenv
    virtualenv -p 3.10 testenv
    
  • 配置选项discovery

    [virtualenv]
    discovery = pyenv
    
    virtualenv -p 3.10 testenv
    
  • 虚拟环境包装器环境变量VIRTUALENVWRAPPER_VIRTUALENV_ARGS

    export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--discovery=pyenv'
    mkvirtualenv -p 3.10 testenv
    

操作模式

插件支持几种操作模式。操作模式会影响发现过程的各种方面。

模式 指定器 路径指定器 回退到builtin
兼容 可选 允许 不允许
回退 可选 允许
严格 必需 错误 不允许

模式作为发现方法名称的一部分指定:pyenv-{mode},例如

virtualenv --discovery=pyenv-fallback -p 3.10 testenv

或者

export VIRTUALENV_DISCOVERY=pyenv-strict
virtualenv -p 3.10 testenv

如果没有指定模式,则使用兼容模式,即--discovery=pyenv--discovery=pyenv-compat相同。

推荐在大多数情况下使用 compat 模式。它紧密地模仿 builtin 发现插件,以最大限度地提高与现有工具的兼容性(例如,buildtox

  • 如果没有提供指定器,则插件回退到 sys.executable,即使它没有通过 pyenv 安装;
  • 如果提供了路径指定器(-p /path/to/bin/python),则使用该路径,即使它没有通过 pyenv 安装;
  • 否则(-p 3.7-p py37),仅使用 pyenv 安装的解释器。

fallback 模式与 compat 相同,但如果没有找到解释器,则回退到 builtin 插件。如果提供了多个指定器,则在回退到 builtin 插件作为最后的手段之前,首先尝试所有指定器。

如其名称所示,strict 模式确保仅使用 pyenv 安装的解释器

  • 需要指定器,sys.executable 永远不会用作回退,即使它通过 pyenv 安装(将来可能会放宽);
  • 不允许路径指定器,即使路径指向 pyenv 安装的解释器(将来可能会放宽);
  • 不会回退到 builtin 插件。

Python 指定器格式

插件支持两种非正式称为“pyenv-style”和“virtualenv-style”的指定器格式。

两种指定器格式的版本部分可以包含一个(major)、两个(major.minor)或三个(major.minor.patch)组件。当指定一个组件的版本时,选择最新安装的最终次要版本,忽略预发布版本。当指定两个组件的版本时,选择最新安装的最终修补版本,忽略预发布版本。当指定三个组件的版本时,选择确切的最终版本,忽略预发布版本。仅当显式请求时才选择预发布版本。

已安装 请求 选择
3.9.5; 3.9.17, 3.10.0 3 3.10.0
3.9.5; 3.9.17, 3.10.0 3.9 3.9.17
3.9.5; 3.9.17, 3.10.0 3.9.5 3.9.5
3.9.5; 3.9.17, 3.10.0 3.9.0
3.12-dev3.12.0b3 3.12
3.12-dev3.12.0b3 3.12.0
3.12-dev3.12.0b3 3.12-dev 3.12-dev
3.12-dev3.12.0b3 3.12.0b3 3.12.0b3

pyenv-style

pyenvpyenv install --list)使用的格式相同。

  • 具有 1 个版本组件的最终版本:3
  • 具有 2 个版本组件的最终版本:3.11
  • 具有 3 个版本组件的最终版本:3.11.2
  • 预发布版本:3.13.0a43.12.0b33.11.0rc1
  • 开发版本:3.13-dev

virtualenv-style

virtualenv文档)使用的格式相同。tox(文档)使用此格式的一个子集。

  • 相对或绝对路径:/path/to/bin/python(它可以是指定的任何 Python 解释器,而不仅仅是通过 pyenv 安装的)
  • 具有 1 个版本组件的最终版本:py3python3cpython3python3-32py3-64
  • 具有 2 个版本组件的最终版本:311py311py3.11python311cpython3.11python3.11-32py311-64
  • 具有 3 个版本组件的最终版本:py3.11.2python3.11.2cpython3.11.2python3.11.2-32py3.11.2-64

限制

  • 目前仅支持 CPython。
  • 指定器的 architecture 部分(-32/-64)被忽略。例如,以下所有指定器都与任何安装的 CPython 3.8.1 匹配,而不管架构如何:python3.8.1python3.8.1-32python3.8.1-64

内部

virtualenv-pyenv 依赖于 pyenv 来发现 Python 解释器,即它从不调用任何 pyenv 命令,也不需要 pyenv 在 PATH 中。相反,插件使用 pyenv-inspect 库,该库反过来检查 $PYENV_ROOT/versions 目录的内容。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

virtualenv-pyenv-0.5.0.tar.gz (8.9 kB 查看哈希值)

上传时间

构建分发

virtualenv_pyenv-0.5.0-py3-none-any.whl (7.1 kB 查看哈希值)

上传时间 Python 3

由以下支持