#!/usr/bin/env bash # check for freesurfer home [ ! -e "$FREESURFER_HOME" ] && echo "error: freesurfer has not been properly sourced" && exit 1 # Use FREESURFER_FSPYTHON if set in the environment, else if ../fspython subdir exists # parallel to CMAKE_INSTALL_PREFIX, default to that relative path for FREESURFER_FSPYTHON. # Then update environment - set PATH to contain FREESURFER_FSPYTHON/bin and force # FREESURFER_HOME to FREESURFER_FPSYHTON in order to find model files, etc. # set a variable to python dist in either the single or split install tree setup export FREESURFER_HOME_FSPYTHON="${FREESURFER_HOME}" func_setup_fspython_env() { export FREESURFER_HOME_FSPYTHON="${FREESURFER_FSPYTHON}" export FREESURFER_HOME_FALLBACK="${FREESURFER_HOME}" export FREESURFER_HOME="${FREESURFER_FSPYTHON}" echo ${PATH} | grep "${FREESURFER_FSPYTHON}" > /dev/null if [ $? -ne 0 ]; then export PATH="${FREESURFER_FSPYTHON}/bin:${PATH}" fi } if [ ! -z "$FREESURFER_FSPYTHON" ]; then if [ -e "$FREESURFER_FSPYTHON" ]; then func_setup_fspython_env fi elif [ -e "$FREESURFER_HOME/../fspython" ]; then ## no realpath on MacOS # export FREESURFER_FSPYTHON=`realpath "${FREESURFER_HOME}/../fspython"` export FREESURFER_FSPYTHON=`(cd "${FREESURFER_HOME}/../fspython" && pwd -P)` func_setup_fspython_env fi # point to freesurfer-installed packages and make sure that PYTHONPATH is entirely # overwritten, since we don't want any user packages to interfere with things. # Allow this to be overridden with the FS_LOCAL_PYTHONPATH env var if [ -z "$FS_LOCAL_PYTHONPATH" ]; then export PYTHONPATH="${FREESURFER_HOME}/python/packages" else export PYTHONPATH="${FS_LOCAL_PYTHONPATH}:${FREESURFER_HOME}/python/packages" echo "fspython local path #@# ======================================" echo fspython PYTHONPATH $PYTHONPATH # echo for documentation fi # do a setenv FS_PYTHON_DEBUG 1 to turn this on for easier debugging if [ ! -z "$FS_PYTHON_DEBUG" ]; then if [ ! $FS_PYTHON_DEBUG -eq 0 ]; then echo "Starting fspython #@# ======================================" echo ${FREESURFER_HOME}/python/bin/python3 printenv fi fi # futhermore, prevent local user packages from being accessed in fspython # since we want a very isolated environment export PYTHONNOUSERSITE=1 unset PYTHONUSERBASE # don't check for pip upgrades, since it confuses people export PIP_DISABLE_PIP_VERSION_CHECK=1 # run python if [ -e "${FREESURFER_HOME}/python/bin/python3" ]; then exec ${FREESURFER_HOME}/python/bin/python3 "$@" else echo "error: fspython has not been configured correctly - \$FREESURFER_HOME/python/bin/python3 does not exist" exit 1 fi