2个版本
使用旧的Rust 2015
0.1.1 | 2018年11月15日 |
---|---|
0.1.0 | 2018年11月15日 |
#793 在 Unix API
26 每月下载量
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
- 版本越高越好。
- 版本越具体越好。
- 通过 PATH 管理的。
- 尊重
PY_MANAGED_DIR
和PATH
的顺序。
请注意,规则 2. 的意思是结果可能不会与 PATH 中的顺序匹配。例如,对于 py -3
,将优先选择 python3.4
,即使后者更早被指定。我个人认为这没问题(并且,坦白说,这更容易实现),但如果有人提出合理的论点,我会考虑更改它。
此外,符合 PEP 486,如果 py
在虚拟环境中调用(没有版本指定),则始终使用虚拟环境中的 Python。
未来工作
- 根据 PEP 397 的规定,通过
py.ini
和环境变量支持配置。
依赖项
~180–460KB