This provides automatic modulefile generation for EnvironmentModules. Modulefiles are created with a basic template which:
- Loads any modules listed in
requires
- Sources the activate script of the installed packages (assumes venv installation). Does this by setting VIRUTAL_ENV and prepending the bin folder to PATH
- Sets extra environment variables defined in extra-paths
Table of Contents
pip install hatch-modulefile
Example use case. Note that requires is a list of modulefiles available on your system through environment modules. Extra paths defines modulefile environment manipulations.
[build.hooks.modulefile] requires = [ "module1/1.0.0", "module2/3.1.2", "module3/2.0.0", ] extra-paths = [ { type="setenv", variable="NUMEXPR_MAX_THREADS", value="8" }, { type="prepend-path", variable="PATH", value="/custom/path" }, ]
This would generate a modulefile which looks like this:
#%Module
# Gets the folder two folders up from this file
set venv [file dirname [file dirname [file dirname [file normalize $ModulesCurrentModulefile/___]]]]
set site_packages [glob $venv/lib/python*/site-packages]
set necessary {
module1/1.0.0
module2/3.1.2
module3/2.0.0
}
foreach mod $necessary {
set splitList [split $mod "/"]
set mod_name [lindex $splitList 0]
if { [ is-loaded $mod_name ] } {
module switch $mod
} else {
module load $mod
}
}
setenv VIRTUAL_ENV $venv
prepend-path PATH $venv/bin
# Extra module path requirements
setenv NUMEXPR_MAX_THREADS 8
prepend-path PATH /custom/path
hatch-modulefile
is distributed under the terms of the MIT license.