跳转到主要内容

tox插件,允许指定要使用的解释器位置路径

项目描述

用法

  • tox --scan 显示之前找到的名称到可执行路径映射。

  • tox --scan PATTERN1 PATTERN2 在模式中搜索Python可执行文件,并将找到的路径以这种方式存储以供tox将来使用

这允许您轻松指定多个Python可执行文件以供tox使用。无需永久或临时将其路径添加到您的PATH中,这在所有情况下都有不可接受的副作用,除非通过别名直接在命令行中调用tox(正如您所猜,这不是我的典型用法)。

在Windows上,可以通过注册表找到可执行文件。因此,指定模式以找到可执行文件是不必要的,并且相对繁琐。使用 tox --scan 注册表 将扫描注册表以查找可执行路径并提供这些路径供未来运行。这最终允许在Windows上运行tox,而无需在C:\中安装Python时造成混乱。

安装

从tox 2.0开始,基于pluggy的插件机制已包含在tox中。您只需做

pip安装tox_globinterpreter

如果您安装 pytestpip install pytest)来测试此模块本身,并且您使用的是 bash shell,请确保重新哈希 bash(hash -r 或重新激活虚拟环境)。

默认的 tox 解释器查找行为

非 Windows 系统

tox 会搜索在 $PATH 中指定的路径来查找 python 可执行文件(待检查)。

对于许多 Linux 发行版,系统 python(以及最近的一些 python,因为 Linux 发行版逐渐转向 Python3,系统工具同时使用 2.7.x 和 3.4.X)不能替换为较新的微版本,而不会带来很多麻烦。这些新的微版本应安装在一些“其他”目录中,例如 /opt/python/2.7.9。其 bin 目录在启动时不能添加到正常的 PATH 中,因为这会破坏一些依赖于较旧 python 微版本(及其附加安装的库)的系统程序。

可以通过为 tox 创建别名来临时将此目录添加到 tox 的每次调用中,但如果 tox 从 Makefile 中调用,则不起作用。将 make 别名为包括该路径可能会破坏来自同一 Makefile 的系统工具调用。

Windows

在 Windows 上,toxC:\\python?.? 中查找安装,并根据目录名确定版本(待检查)。

如果您将 python 解释器安装在非默认位置,则此方法将不起作用,例如,当您需要安装 64 位和 32 位版本时,或者当它们安装在更合适的 C:\Program Files\ 或类似目录中时。

tox_globinterpreter 插件扩展

非 Windows 系统

tox_globinterpretertox 添加了一个命令行选项:--scan。如果带有参数调用,则这些参数应是一个模式,或模式的列表,这些模式将被 glob 和 shlex 匹配,形成一个基础名称到 python 二进制文件路径的映射,然后存储在用户全局范围内供将来使用(在 $XDG_CONFIG_HOME/tox 下,默认为 ~/.config/tox)。例如:

tox --scan '/opt/python/2.?/bin/python?.?' ../../../opt/python/pypy*/bin/pypy

(请注意,只有第二个参数不会被 shell 展开,第一个参数被 tox_globinterpreter 引用并展开)。

如果没有参数调用 tox --scan,则输出当前存储的映射(基础名称到可执行文件)。例如:

python2.7 /opt/python/2.7/bin/python2.7
pypy /opt/python/pypy-2.5.0/bin/pypy

(如果找到多个相同的基础名称,则使用列表中的 第一个)。

如果设置了环境变量 TOX_INTERPRETER_GLOBS,则这将导致使用该环境变量指定的模式搜索 python 二进制文件(每次展开和搜索)。

如果设置了 TOX_INTERPRETER_GLOBS,它将防止使用 –scan 列表,并且如果设置了任何一个,则不会执行通过 PATH 的正常搜索。

--scan 过程中,确定用于 tox.ini 中 envlist 的基础名称(例如 py27)的依据是二进制文件名,如果它包含版本号(例如 python2.7)。如果二进制文件等于 python,则基础名称(包括版本)是通过调用解释器确定的。当展开 TOX_INTERPRETER_GLOBS 时,此调用确定版本信息的当前成本被认为太高。

Windows

tox_globinterpretertox 添加命令行选项,其中主要的是:--scan

在Windows上,您应该首先指定 --scan c:/python/*/python.exe c:/pypy*/*/*/pyp.exe 以创建基础名称到路径的映射。这不会从注册表中获取它们,因为注册表是不完整的(只有特定CPython的64位和32位版本被注册,pypy根本未注册)。

如果使用不带参数的 tox --scan,则会打印出当前存储的映射。例如。

python2.7 c:\python\2.7\python2.7.exe
python2.7 c:\python\2.7-32\python2.7.exe

如果您安装了64位和32位版本,请通过执行

tox -r --32

(这可能在某个时候在 tox 本身中得到支持,但目前您不能指定 py27-32 作为32部分从未传递给 tox_get_python_executable

历史记录

我最初实现了将解释器列表作为对 tox 的补丁,为这个补丁我提交了一个PR,这个PR拖延了两年(进行了重复更新),直到我被要求更新它(再次,但这次是由tox的作者)。在提供插件接口后,这个tox插件取代了早期的PR请求。

项目详细信息


下载文件

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

源分布

tox-globinterpreter-0.4.0.tar.gz (21.8 kB 查看哈希值)

上传时间

由支持