Skip to main content

module-manager

tests Coverage License Ruff Documentation PyPI Python versions

module-manager deploys versioned Python, Rust, shell, and collective CLI environments behind GNU environment modulefiles for Linux/HPC systems.

It writes tools and modulefiles into predictable versioned locations:

/prod/tools/<name>/<version>/bin
/prod/modulefiles/<name>/<version>

The installation prefix and module root must be different directories.

Installation

Install from PyPI:

pip install env-module-manager

Or install as a uv-managed tool:

uv tool install env-module-manager

Quick Start

Deploy a Python CLI with uv tool install:

module-manager deploy-python ruff 0.8.0 \
  --package 'ruff==0.8.0' \
  --default-index https://packages.example/simple \
  --constraints /prod/constraints/runtime.txt \
  --uv-executable /opt/uv/bin/uv \
  --prefix /prod/tools \
  --module-root /prod/modulefiles \
  --execute-install

Set MODULE_MANAGER_UV_EXECUTABLE=/opt/uv/bin/uv to use the same uv path by default.

To expose executable entry points from direct dependencies too, add --with-executables-from=package1,package2. Used without package names, the option reads [project].dependencies from the current directory's pyproject.toml.

Python deployments also pass through uv's --with, --with-requirements, --constraints, --overrides, --lfs, --verbose, --native-tls, and --no-config options. --config-file is accepted as an alias for --uv-config-file.

Deploy a Rust binary:

module-manager deploy-rust ripgrep 14.1.1 \
  --binary ./target/release/rg \
  --prefix /prod/tools \
  --module-root /prod/modulefiles

Generate a constraints file for a Python CLI:

module-manager auto-constraints ruff==0.8.0 --output constraints.txt

Deploy from a direct wheel or Git URL:

module-manager deploy-python my-tool 1.0.0 \
  --package 'my-tool @ file:///prod/wheels/my_tool-1.0.0-py3-none-any.whl' \
  --prefix /prod/tools \
  --module-root /prod/modulefiles \
  --execute-install

Deploy a shell script:

module-manager deploy-script my-tool 1.0.0 \
  --script ./scripts/my-tool \
  --prefix /prod/tools \
  --module-root /prod/modulefiles

Deploy a collective environment from a TOML manifest:

module-manager deploy-env --file dev-tools.toml --dry-run
module-manager deploy-env --file dev-tools.toml

Use the generated module:

module use /prod/modulefiles
module load ruff
ruff --version

Deployments make the deployed version the module default. Add --no-default when you want to write the versioned modulefile without changing the default.

Remove a deployed version:

module-manager uninstall ruff 0.8.0 \
  --prefix /prod/tools \
  --module-root /prod/modulefiles

Documentation

Read the full documentation on Read the Docs.

Metadata

Release files for env-module-manager 0.11.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for env-module-manager 0.11.0
File Size Uploaded
env_module_manager-0.11.0.tar.gz 102.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for env-module-manager 0.11.0
File Interpreter ABI Platform
env_module_manager-0.11.0-py3-none-any.whl Python 3 none any Details

Total release size: 126.4 kB

Release files / env_module_manager-0.11.0.tar.gz

Download URL env_module_manager-0.11.0.tar.gz
Size 102.6 kB
Tags Source
SHA-256 checksum
How to use checksums
9f4674d27e98bea3dcf63a271f9f80b33c8afb28d69d6268340180226d25d64d
BLAKE2b-256 checksum
How to use checksums
6703a6b496be2c823c3b7ac24f3f287357787b26875310acdeba42ff4863a7b2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / env_module_manager-0.11.0-py3-none-any.whl

Download URL env_module_manager-0.11.0-py3-none-any.whl
Size 23.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
dce7a5e6b1832d9c892cb37e968be08b562e4b335795f56ac0b75f82f26fd973
BLAKE2b-256 checksum
How to use checksums
6278a4b201ccb6a9e8df9de47860341bf1e91307486f1b9a5750613e0427c56c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.2.0 CPython/3.14.6

Release history Release notifications | RSS feed

0.12.0

2 release files

This release

0.11.0 This release

2 release files

0.10.0

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page