CHTC has instructions for making a tarball of python packages (e.g. numpy, pyuvdata, etc). This tarball is then either transferred to the execution host if it is under 100MB or downloaded from their web proxy server (with prior authorization) if 100MB or over. This, coupled with a python installation via tarball, may be enough for execution hosts to run HERA calibration jobs.
Here is a sample set of instructions to build a python-packages tarball
cat > build.sub <<EOM
# Python build file
universe = vanilla
log = interactive.log
# Choose a version of Python from the table above
transfer_input_files = http://proxy.chtc.wisc.edu/SQUID/chtc/python37.tar.gz+IsBuildJob = true
requirements = (OpSysMajorVer =?= 7)
request_cpus = 1
request_memory = 2GB
request_disk = 2GB
queue
EOM
condor_submit -i build.sub
tar xfz python37.tar.gz
export PATH=${PWD}/python/bin:${PATH}
export PYTHONPATH=${PWD}/hera_calibration_packages
mkdir -p ${PYTHONPATH}
python3 -m pip install --target ${PYTHONPATH} numpy scipy astropy h5py toml six matplotlib scikit-learn cached-property
python3 -m pip install --target ${PYTHONPATH} healpy
python3 -m pip install --target ${PYTHONPATH} pyuvdata
python3 -m pip install --target ${PYTHONPATH} aipy
# trying more packages. This seems to work
python3 -m pip install --target ${PYTHONPATH} git+https://github.com/HERA-Team/pyuvdata.gitpython3 -m pip install --target ${PYTHONPATH} git+https://github.com/HERA-Team/linsolve.gitpython3 -m pip install --target ${PYTHONPATH} git+https://github.com/HERA-Team/hera_qm.gitpython3 -m pip install --target ${PYTHONPATH} git+https://github.com/HERA-Team/uvtools.gitpython3 -m pip install --target ${PYTHONPATH} git+https://github.com/HERA-Team/hera_cal.git# plaplant said "hera_opm is only used for setting up makeflow. so the
# execution host itself does not need it
tar cfz hera_calibration_packages.tar.gz hera_calibration_packages
exit