Skip to content

Instantly share code, notes, and snippets.

@GiantMolecularCloud
Last active January 22, 2021 11:26
Show Gist options
  • Save GiantMolecularCloud/1e09f91a1cae41a1212e0469c0963fd5 to your computer and use it in GitHub Desktop.
Save GiantMolecularCloud/1e09f91a1cae41a1212e0469c0963fd5 to your computer and use it in GitHub Desktop.
Installing python packages into CASA (pre CASA 6)

Astropy has a nice description how arbitrary packages can be installed into the bundled version of CASA (all versions before 6): https://docs.astropy.org/en/stable/install.html#installing-astropy-into-casa

This works well but can be a bit annoying to restart CASA multiple times and wait in between. The following simple bash script solves this:

# packages to be installed
####################################################################################################

# Not all python packages work. Just try it and if using the package fails, the installation will
# only caused CASA to take up a few bytes more storage but not cause harm.

PACKAGES=(astropy aplpy=1.1.1)


# install pip into CASA
####################################################################################################

casa --nologger --log2term <<-casaINPUT
    from setuptools.command import easy_install
    easy_install.main(['--user', 'pip'])
casaINPUT


# install the packages
####################################################################################################

FormattedPackageList="["
for i in "${PACKAGES[@]}"
do
    FormattedPackageList=$FormattedPackageList"'$i', "
done
FormattedPackageList=${FormattedPackageList::-2}"]"

casa --nologger --log2term <<-casaINPUT
    import pip
    for package in $FormattedPackageList: pip.main(['install', package, '--user'])
casaINPUT
####################################################################################################
# INSTALL PACKAGES TO CASA
####################################################################################################
#
# This is only vaguely a python snippet but it helps to work with CASA which has a python interface.
# CASA (https://casa.nrao.edu/) is built on a heavily outdated python kernel and lacks many useful
# packages. It is however possible to install many python packages right into CASA. This is described
# here: https://casaguides.nrao.edu/index.php/OtherPackages
# The install routine requires to start CASA twice which can be annoying. This script will install
# the given PACKAGES automatically.
####################################################################################################
# packages to be installed
####################################################################################################
# Not all python packages work. Just try it and if using the package fails, the installation will
# only caused CASA to take up a few bytes more storage but not cause harm.
PACKAGES=(astropy aplpy=1.1.1)
####################################################################################################
# install pip into CASA
####################################################################################################
casa --nologger --log2term <<-casaINPUT
from setuptools.command import easy_install
easy_install.main(['--user', 'pip'])
casaINPUT
####################################################################################################
# install the packages
####################################################################################################
FormattedPackageList="["
for i in "${PACKAGES[@]}"
do
FormattedPackageList=$FormattedPackageList"'$i', "
done
FormattedPackageList=${FormattedPackageList::-2}"]"
casa --nologger --log2term <<-casaINPUT
import pip
for package in $FormattedPackageList: pip.main(['install', package, '--user'])
casaINPUT
####################################################################################################
#
####################################################################################################
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment