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
发现插件,以最大限度地提高与现有工具的兼容性(例如,build、tox)
- 如果没有提供指定器,则插件回退到
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-dev ;3.12.0b3 |
3.12 |
— |
3.12-dev ;3.12.0b3 |
3.12.0 |
— |
3.12-dev ;3.12.0b3 |
3.12-dev |
3.12-dev |
3.12-dev ;3.12.0b3 |
3.12.0b3 |
3.12.0b3 |
pyenv-style
与 pyenv(pyenv install --list
)使用的格式相同。
- 具有 1 个版本组件的最终版本:
3
- 具有 2 个版本组件的最终版本:
3.11
- 具有 3 个版本组件的最终版本:
3.11.2
- 预发布版本:
3.13.0a4
、3.12.0b3
、3.11.0rc1
- 开发版本:
3.13-dev
virtualenv-style
与 virtualenv(文档)使用的格式相同。tox(文档)使用此格式的一个子集。
- 相对或绝对路径:
/path/to/bin/python
(它可以是指定的任何 Python 解释器,而不仅仅是通过 pyenv 安装的) - 具有 1 个版本组件的最终版本:
py3
、python3
、cpython3
、python3-32
、py3-64
- 具有 2 个版本组件的最终版本:
311
、py311
、py3.11
、python311
、cpython3.11
、python3.11-32
、py311-64
- 具有 3 个版本组件的最终版本:
py3.11.2
、python3.11.2
、cpython3.11.2
、python3.11.2-32
、py3.11.2-64
限制
- 目前仅支持 CPython。
- 指定器的
architecture
部分(-32
/-64
)被忽略。例如,以下所有指定器都与任何安装的 CPython 3.8.1 匹配,而不管架构如何:python3.8.1
、python3.8.1-32
、python3.8.1-64
。
内部
virtualenv-pyenv 依赖于 pyenv 来发现 Python 解释器,即它从不调用任何 pyenv 命令,也不需要 pyenv 在 PATH
中。相反,插件使用 pyenv-inspect 库,该库反过来检查 $PYENV_ROOT/versions
目录的内容。
项目详情
virtualenv-pyenv-0.5.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7b0e5fe3dfbdf484f4cf9b01e1f98111e398db6942237910f666356e6293597f |
|
MD5 | 8e0290128a290a90729dd64a4d1d5e1b |
|
BLAKE2b-256 | 5fa375443f72408a3ab0d39a5e05a0ce6152bf0bf4c2636114c9c07d76b65bb2 |
virtualenv_pyenv-0.5.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 21750247e36c55b3c547cfdeb08f51a3867fe7129922991a4f9c96980c0a4a5d |
|
MD5 | 1dcdc099649934e38ec4d4b2b9765ca4 |
|
BLAKE2b-256 | 123985a4b5b60f8425c22ceb1770fb265ee9073ca8b57654316f8108837db006 |