Python manual package manager—a package manager written in Python for manually installing a compiled stack
:maxdepth: 2
:numbered:
:hidden:
api/modules
CHANGELOG
Introduction
Python manual package manager is a package manager written in Python for manually installing a compiled stack.
Before you proceed, you should know that for typical usage, conda (and its friends mamba/micromamba) should be enough for the purpose.
pmpm built on top of conda which also compile some Python packages locally.
Goal:
- Custom compilation of some packages, possibly for optimization such as
-marchand-mtunewhich is beyond whatcondaoffers. - Provide fast re-compile after some small local changes, suitable for development.
Approaches:
conda_install: Both the conda provided stack and the compiled stack frompmpmare in the same prefix, this makes activating an environment seamless. It is achieved by cleanly compile an environment using the conda provided stack only, including compilers.system_install: The conda provided stack and the compiled stack frompmpmhas a different prefix. This makes the 2 completely separate, where the compiled stack can uses the host compilers. This is useful for example when the vendor provided MPI compilers are needed. This also has more points of failure, as we can't completely control what is in the host environment.pmpmonly serves as automation for reproducibility. But you probably need to modify howpmpmbehaves on different host, and you probably need to install packages from the OS package manager.
Alternative approach:
- You can create a conda recipe and use
conda-buildand tweak from there for customization. The only downside probably is the time it takes to re-compile after modifications.
Installation
pip install pmpm
Development
git clone https://github.com/ickc/python-pmpm.git
cd python-pmpm
conda activate
mamba env create -f environment.yml
conda activate pmpm
pip install -e .
Usage
Use one of the example config in this repository:
pmpm conda_install "$HOME/pmpm-test" --file examples/....yml
Design
When installing from a YAML file such as those given in the examples/ directory,
pmpm behaves as a superset of conda/mamba with an extra _pmpm key in the YAML configuration.
pmpm will compile packages available in pmpm.packages after the conda environment is created,
as defined in the YAML file.
Metadata
Release files for python-pmpm 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| python_pmpm-0.2.0.tar.gz | 14.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| python_pmpm-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 32.5 kB
Release files / python_pmpm-0.2.0.tar.gz
| Download URL | python_pmpm-0.2.0.tar.gz |
|---|---|
| Size | 14.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a03b903b2a9dbd3736f53160f618f750b4a284359aafb6f1cd88ed17334909bd
|
|
BLAKE2b-256 checksum How to use checksums |
161ac4b130bfc47a930292a0a0372bb040c5d5c88e14ad452bb541539d0685a7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/4.0.2 CPython/3.11.7
|
Release files / python_pmpm-0.2.0-py3-none-any.whl
| Download URL | python_pmpm-0.2.0-py3-none-any.whl |
|---|---|
| Size | 18.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c53c0949e40a5d84502b7dcd38aa5a9ed1fec4366a83ba753c449c7f0408d2a8
|
|
BLAKE2b-256 checksum How to use checksums |
05343391946770677b5f0bb34362f0aa1767b60bc1743b6e66473c6b10927c6a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/4.0.2 CPython/3.11.7
|