2 个版本
0.3.2 | 2020 年 1 月 29 日 |
---|---|
0.3.0 | 2020 年 1 月 25 日 |
#1230 in 开发工具
575KB
6.5K SLoC
Hygeia
Hygeia 是 Python 解释器管理器,使用 Rust 编写。其目标是允许项目通过 .python-version
文件指定要使用的解释器。
之前项目的名称是 hygeia。
Python 打包情况令人痛苦。macOS 随带 Python 2.7,即将达到生命周期的终点。此外,它不包括 pip
,即包安装器。pip
只在 Python >= 3.4 中默认包含。
pip
的 安装说明 包含了关于在系统解释器中安装它的严重警告。
可以使用 virtualenv
,但它需要安装... 使用 pip
,这导致了一个鸡生蛋的问题。
Hygeia 将下载和编译指定的 Python 版本,并允许轻松地在它们之间切换。
该项目从 pyenv
中汲取了许多灵感,后者做了一些类似的事情。pyenv
是用 Bash 编写的,这 阻止了它轻松地在 Windows 上使用。Hygeia 旨在跨 Windows、Linux 和 macOS 移植。
要求
由于 Python 解释器是下载和编译的,因此需要一些构建工具。
macOS / OSX
确保已安装依赖项
-
> brew install openssl xz
-
XCode
> xcode-select --install
有关更多信息,请参阅 Python 开发者指南。
Linux
待定
Windows
在 Windows 下安装 Python 工具链不需要任何东西(除了 Hygeia 本身);使用预编译的二进制文件。
安装
- 访问 发布页面 下载您平台(Linux、macOS、Windows)的最新预编译版本。
- 解压缩到临时位置。
- 在终端中执行
./hygeia setup bash
。这将- 将自身复制到
$HYGEIA_HOME
(${HOME}/.hygeia
) 作为 Python 的代理 - 创建文件
$HYGEIA_HOME/extra-packages-to-install.txt
,包含 待安装的 Python 包列表,当使用--extra
/-e
标志与install
或select
命令时 - 设置
~/.bashrc
以在您的${PATH}
前添加${HOME}/.hygeia/shims
- 将自身复制到
- 您可以删除下载的存档和提取的二进制文件。
编译
就像 cargo build
一样简单!
用法
查看 hygeia --help
了解所有命令
> hygeia --help
hygeia 0.1.4
Nicolas Bigaouette <[email protected]>
Control which Python toolchain to use on a directory basis.
USAGE:
hygeia [SUBCOMMAND]
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
SUBCOMMANDS:
autocomplete Print to stdout an autocomplete script for the specified shell
help Prints this message or the help of the given subcommand(s)
install Install version, either from the provided version or from `.python-version`
list List installed Python versions
path Get path to active interpreter
run Run a binary from the installed `.python-version`
select Select specified Python versions to use
setup Setup the shim
version Get version of active interpreter
初始设置
通过安装它(及其代理)到 $HYGEIA_HOME
并配置 bash shell 来设置 Hygeia
> hygeia setup bash
这将
- 将
hygeia
二进制文件复制到$HYGEIA_HOME/shims/
; - 使用 Python 二进制名称创建到它的硬链接;
- 在
$HYGEIA_HOME/hygeia.bash-completion
中创建 bash 完成脚本; - 通过
~/.bashrc
将$HYGEIA_HOME/shims/
添加到${PATH}
; - 在
~/.bashrc
中添加一个源代码行$HYGEIA_HOME/hygeia.bash-completion
; - 创建文件
$HYGEIA_HOME/extra-packages-to-install.txt
,包含当使用--extra
/-e
标志与install
或select
命令时安装的 Python 包列表。
列出解释器
> hygeia list
+--------+---------+------------------------------------------------+
| Active | Version | Location |
+--------+---------+------------------------------------------------+
| | 3.7.1 | /Users/nbigaouette/.hygeia/installed/3.7.1/bin |
+--------+---------+------------------------------------------------+
| | 3.7.2 | /Users/nbigaouette/.hygeia/installed/3.7.2/bin |
+--------+---------+------------------------------------------------+
| | 3.5.6 | /Users/nbigaouette/.hygeia/installed/3.5.6/bin |
+--------+---------+------------------------------------------------+
| ✓ | 3.6.8 | /Users/nbigaouette/.hygeia/installed/3.6.8/bin |
+--------+---------+------------------------------------------------+
| | 3.7.2 | /usr/local/bin |
+--------+---------+------------------------------------------------+
| | 2.7.15 | /usr/local/bin |
+--------+---------+------------------------------------------------+
| | 2.7.10 | /usr/bin |
+--------+---------+------------------------------------------------+
如果文件 .python-version
包含一个未安装的版本,则列表会将其报告为活动但不可用
> hygeia list
+--------+---------+------------------------------------------------+
| Active | Version | Location |
+--------+---------+------------------------------------------------+
| ✗ | = 3.6.8 | Not installed |
+--------+---------+------------------------------------------------+
| | 3.7.2 | /usr/local/bin |
+--------+---------+------------------------------------------------+
| | 2.7.15 | /usr/local/bin |
+--------+---------+------------------------------------------------+
| | 2.7.10 | /usr/bin |
+--------+---------+------------------------------------------------+
获取活动解释器的路径
> hygeia path
/Users/nbigaouette/.hygeia/installed/3.6.8/bin
获取活动解释器的版本
> hygeia version
3.6.8
将解释器设置为活动状态
这将创建(或覆盖)当前工作目录中的文件 .python-version
(使用最新的与3.7
兼容的语义版本控制版本)。
> hygeia select ~3.7
> hygeia version
3.7.2
注意,可以使用--extra
与select
或install
命令一起使用,以读取文件$HYGEIA_HOME/extra-packages-to-install.txt
,并使用pip install
安装所有指定的包。此外,也可以使用--extra-from
指定不同的文件。这两个标志可以同时使用,并且将使用两个文件的内容。以#
开头的行将被忽略(作为注释)。
解析由Rust的semver crate执行。有关解析的详细信息,请参阅需求部分,在semver crate文档中。
卸载解释器
或者直接删除包含已安装解释器的目录,例如$HYGEIA_HOME/installed/3.5.6
(其中$HYGEIA_HOME
默认为$HOME/.hygeia
)。
使用hygeia list
获取解释器列表(及其安装路径)。
注意
日志记录
导出RUST_LOG
环境变量以启用hygeia日志级别
> export RUST_LOG=hygeia=debug
有关更多信息,请参阅Rust crates log
和env_logger
。
Python包
可以使用pip
(这将调用hygeia的shim)安装Python包。
> pip install numpy
许可证
该项目可在以下任一许可证下使用:
- Apache License,版本2.0,(LICENSE-APACHE或https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT或http://opensource.org/licenses/MIT)
任选其一。
行为
应尊重Rust行为准则。对于升级或监管问题,请联系Nicolas([email protected]),而不是Rust监管团队。
依赖关系
~22–38MB
~619K SLoC