Skip to main content

a package manager written in Python for manually installing a compiled stack

Project description

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 -march and -mtune which is beyond what conda offers.
  • Provide fast re-compile after some small local changes, suitable for development.

Approaches:

  • conda_install: Both the conda provided stack and the compiled stack from pmpm are 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 from pmpm has 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. pmpm only serves as automation for reproducibility. But you probably need to modify how pmpm behaves 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-build and 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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python_pmpm-0.2.0.tar.gz (14.4 kB view details)

Uploaded Source

Built Distribution

python_pmpm-0.2.0-py3-none-any.whl (18.2 kB view details)

Uploaded Python 3

File details

Details for the file python_pmpm-0.2.0.tar.gz.

File metadata

  • Download URL: python_pmpm-0.2.0.tar.gz
  • Upload date:
  • Size: 14.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for python_pmpm-0.2.0.tar.gz
Algorithm Hash digest
SHA256 a03b903b2a9dbd3736f53160f618f750b4a284359aafb6f1cd88ed17334909bd
MD5 33f48c83823ba0041ac703c02d590662
BLAKE2b-256 161ac4b130bfc47a930292a0a0372bb040c5d5c88e14ad452bb541539d0685a7

See more details on using hashes here.

File details

Details for the file python_pmpm-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: python_pmpm-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 18.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for python_pmpm-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c53c0949e40a5d84502b7dcd38aa5a9ed1fec4366a83ba753c449c7f0408d2a8
MD5 18fc800d9d64ddf6378c58fdfd5bd655
BLAKE2b-256 05343391946770677b5f0bb34362f0aa1767b60bc1743b6e66473c6b10927c6a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page