forked from ESCOMP/CTSM
-
Notifications
You must be signed in to change notification settings - Fork 0
/
py_env_create
executable file
·136 lines (128 loc) · 4 KB
/
py_env_create
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#!/bin/bash
#
# py_env_create -- setup the python environment in order to use CTSM python tools
#
# Simple bash script to setup the python environment for the user so they can run the CTSM
# python tools using "conda".
#
dir=${0%/*}
if [ "$dir" = "$0" ];then
dir="."
fi
# Check if conda is in your path
conda --help >& condahelp.txt
error=$?
if [ $error != 0 ]; then
echo "conda is NOT in your path for the bash shell add it with modules or whatever is required on your system to get it in your path"
echo "on cheyenne/capser/etc use -- module load conda"
echo "on izumi/CGD systems use -- module load lang/python"
echo "For notes on installing on a user system see: https://docs.conda.io/projects/conda/en/latest/user-guide/install/index.html"
echo "Error code was $error"
cat condahelp.txt
exit -1
fi
rm condahelp.txt
ctsm_python=ctsm_py
condadir="$dir/python"
domain=`domainname`
if [[ $domain =~ cgd.* ]]; then
condafile="conda_env_ctsm_py_cgd.txt"
else
condafile="conda_env_ctsm_py.txt"
fi
#----------------------------------------------------------------------
# Usage subroutine
usage() {
echo ""
echo "***********************************************************************"
echo "usage:"
echo "./py_env_create"
echo ""
echo "valid arguments: "
echo "[-h|--help] "
echo " Displays this help message"
echo "[-v|--verbose] "
echo " Run with verbose mode for the install so you see the progress bar"
echo "[-f|--file <file>] "
echo " Conda environment file to use (can be a text format or YAML format)"
echo " Assumed to be under the directory: $condadir"
echo " Default is: $condafile"
echo "[--option <option>] "
echo " Option(s) to pass to 'conda install' step"
echo "***********************************************************************"
}
verbose="No"
option=""
while [ $# -gt 0 ]; do
case $1 in
-h|--help )
usage
exit 0
;;
-v|--verbose )
verbose="Yes"
;;
-f|--file )
condafile=$2
shift
;;
--option )
option=$2
shift
;;
* )
echo "ERROR:: invalid argument sent in: $2"
usage
exit 1
;;
esac
shift
done
if [ ! -f $condadir/$condafile ]; then
echo "$condadir/$condafile does NOT exist"
echo "Use the --file option with a valid filename"
exit -1
fi
echo "Use conda to install the python environment needed to run the CTSM python tools in the conda environment: $ctsm_python"
echo "Using the file: $condadir/$condafile"
# Check if the environment already exists, if it does continue, if not create it
conda list -n $ctsm_python >& /dev/null
if [ $? != 0 ]; then
echo "Create $ctsm_python"
cmd="conda create --force -n $ctsm_python -q"
echo "$cmd"
$cmd
if [ $? != 0 ]; then
echo "Error creating conda environment $ctsm_python"
exit -1
fi
else
echo "$ctsm_python environment already exists"
fi
echo "Install $ctsm_python this can take a long time, be patient...."
verbosity="-q"
if [ "$verbose" == "Yes" ]; then
verbosity="-v"
fi
cmd="conda install --yes $verbosity -c conda-forge -n $ctsm_python --file $condadir/$condafile $option"
echo "$cmd"
$cmd
if [ $? != 0 ]; then
echo "Trouble installing the $ctsm_python python environment"
echo "There must be a problem in the $condadir/$condafile conda specification environment file"
echo "Change the file and try again"
if [[ $domain =~ cgd.* ]]; then
pythonpath=`which python`
echo
echo "On CGD systems you may need to do the following..."
echo "Create a bin subdirectory and then link the python version into it..."
echo " mkdir $HOME/.conda/envs/$ctsm_python/bin/"
echo " ln -s $pythonpath $HOME/.conda/envs/$ctsm_python/bin/python3.7"
echo
fi
exit -2
fi
echo "Successfully installed the $ctsm_python python environment"
echo
echo "activate the environment by doing the following..."
echo "conda activate $ctsm_python"