Crates.io | hygeia |
lib.rs | hygeia |
version | 0.3.2 |
source | src |
created_at | 2020-01-25 21:48:30.213268 |
updated_at | 2020-01-29 15:39:00.385574 |
description | Python toolchain manager 🐍 |
homepage | https://github.com/nbigaouette/hygeia |
repository | https://github.com/nbigaouette/hygeia |
max_upload_size | |
id | 201962 |
size | 1,424,078 |
Hygeia is Python interpreter manager, built with ❤ in Rust. It's goal is to allow
individual projects to specify which interpreter to use using a .python-version
file.
The previous project's name was hygeia.
Python packaging situation is painful. macOS comes with Python 2.7 which is coming close to being
end-of-life. Additionally, it does not include pip
, the package installer. pip
was only included
by default with Python >= 3.4.
The install instructions for pip
contains a large warning
against installing it in the system interpreter.
virtualenv
could be used, but it needs to be installed... using pip
,
resulting in a chicken-and-egg situation.
Hygeia will download and compile specified versions of Python and allow switching between them easily.
The project took a lot of inspiration from pyenv
, which does something
similar. pyenv
is written in Bash though, which
prevents it from being used easily on Windows.
Hygeia aims to be portable across Windows, Linux and macOS.
Since Python interpreters are downloaded and compiled, some build tools are required.
Make sure dependencies are installed:
> brew install openssl xz
XCode
> xcode-select --install
See the Python Developer's Guide for more information.
TBD
Nothing (expect Hygeia itself) is required to install a Python toolchain under Windows; pre-built binaries are used.
./hygeia setup bash
. This will:
$HYGEIA_HOME
(${HOME}/.hygeia
) as a shim for Python$HYGEIA_HOME/extra-packages-to-install.txt
containing
a list of Python packages to pip-install
when flag --extra
/-e
is used with install
or select
commands~/.bashrc
to add ${HOME}/.hygeia/shims
in the front of your ${PATH}
As simple as cargo build
!
See hygeia --help
for all commands:
> hygeia --help
hygeia 0.1.4
Nicolas Bigaouette <nbigaouette@gmail.com>
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
To set up Hygeia by installing it (and its shims) to $HYGEIA_HOME
and configuring a bash shell:
> hygeia setup bash
This will:
hygeia
binary to $HYGEIA_HOME/shims/
;$HYGEIA_HOME/hygeia.bash-completion
;$HYGEIA_HOME/shims/
to $PATH
through ~/.bashrc
;$HYGEIA_HOME/hygeia.bash-completion
in ~/.bashrc
;$HYGEIA_HOME/extra-packages-to-install.txt
containing
a list of Python packages to pip-install
when flag --extra
/-e
is used with install
or select
command.> 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 |
+--------+---------+------------------------------------------------+
If the file .python-version
contains a version not installed, the list
reports it as active but not available:
> 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 |
+--------+---------+------------------------------------------------+
To get the active interpreter's path:
> hygeia path
/Users/nbigaouette/.hygeia/installed/3.6.8/bin
To get the active interpreter's version:
> hygeia version
3.6.8
This will create (or overwrite) the file .python-version
(in the current working
directory) with the latest Semantic Versioning version
compatible with 3.7
.
> hygeia select ~3.7
> hygeia version
3.7.2
Note that --extra
can be used with select
or install
command to read file
$HYGEIA_HOME/extra-packages-to-install.txt
and pip install
all packages specified.
Additionally, --extra-from
can also be used to specify a different file. Both flags
can be used at the same time and the content of both files will be used.
Lines starting with #
are ignored (as comments).
The parsing is performed by Rust's semver crate. For details about the parsing, see the Requirements section in the semver crate documentation.
Or simply delete the directory containing the installed interpreter, for example $HYGEIA_HOME/installed/3.5.6
(where $HYGEIA_HOME
defaults to $HOME/.hygeia
).
Obtain the list of interpreters (and their installed path) using hygeia list
.
Export the RUST_LOG
environment variable to enable hygeia' log level:
> export RUST_LOG=hygeia=debug
See the Rust crates log
and env_logger
for
more information.
Installing a Python package can be done using pip
(which will call hygeia' shim).
> pip install numpy
This project is licensed under either of
at your option.
The Rust Code of Conduct shall be respected. For escalation or moderation issues please contact Nicolas (nbigaouette@gmail.com) instead of the Rust moderation team.