#python #version #py #posix #executable #launcher #running

app pylauncher

POSIX系统Python启动器

2个版本

使用旧的Rust 2015

0.1.1 2018年11月15日
0.1.0 2018年11月15日

#793Unix API

26 每月下载量

ISC 许可证

18KB
380

POSIX系统Python启动器

该项目实现了一个py可执行文件,用于启动Python可执行文件,类似于Windows的py.exe启动器,这是由PEP 397首次概述的,以及随后的各种PEP。

原因

这个想法很简单:不是直接运行Python命令(并依赖名称来知道它是哪个版本),而始终使用py命令。您想要的Python版本由选项指定,因此

  • py -2 运行Python 2。
  • py -3 运行Python 3。
  • py -3.5 运行Python 3.5。

等等。这避免了依赖PATH环境变量,如果您在一台机器上有很多不同的开发环境,跟踪起来可能很困难。

查找Python

与Windows(该实用程序从中获得灵感)不同,POSIX系统没有注册表来声明已安装的内容。因此,此工具使用一些启发式方法来确定查找Python。

Python安装分为两种类型:管理和可执行。

管理Python

管理Python是由版本管理器安装的,例如pyenv。这些管理器将所有Python安装放在一个目录中(例如$PYENV_ROOT/versions)。每个子目录的名称以版本命名,是那个Python的根前缀。

此工具查找一个环境变量PY_MANAGED_DIR,以确定在哪里查找管理Python。例如,如果您使用pyenv,可以设置如下

export PY_MANAGED_DIR=$PYENV_ROOT/versions

这样就可以找到目录中的安装。如果您使用多个工具,也可以通过:分隔多个值

export PY_MANAGED_DIR=$PYENV_ROOT/versions:$ASDF_DATA_DIR/installs/python

以下管理器目前已知可以工作

  • pyenv
  • asdf
  • Pythonz

仅支持稳定版CPython安装。

PATH中的Python

环境变量 PATH 也会被检查以查找 Python。这使用习惯的 pythonX.Y 命名约定来告诉可执行文件是哪个版本。不会检查名称的准确性。 python3.5 将被识别为 Python 3.5(未知补丁版本),而 python3 将被识别为 Python 3(未知次要和补丁版本)。

选择 Python

根据以下标准从上述结果中选择 Python

  1. 版本越高越好。
  2. 版本越具体越好。
  3. 通过 PATH 管理的。
  4. 尊重 PY_MANAGED_DIRPATH 的顺序。

请注意,规则 2. 的意思是结果可能不会与 PATH 中的顺序匹配。例如,对于 py -3,将优先选择 python3.4,即使后者更早被指定。我个人认为这没问题(并且,坦白说,这更容易实现),但如果有人提出合理的论点,我会考虑更改它。

此外,符合 PEP 486,如果 py 在虚拟环境中调用(没有版本指定),则始终使用虚拟环境中的 Python。

未来工作

  • 根据 PEP 397 的规定,通过 py.ini 和环境变量支持配置。

依赖项

~180–460KB