diff --git a/Create_JupyterKernel.ipynb b/Create_JupyterKernel.ipynb index d20d9f5eb63a874e3aa02041523adc8b4859f261..fa72972fcdbe57c1f1e616edd606ea905819a5e6 100644 --- a/Create_JupyterKernel.ipynb +++ b/Create_JupyterKernel.ipynb @@ -32,7 +32,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "* Set new kernel name\n", + "* Set kernel name\n", " - change if you like" ] }, @@ -42,16 +42,19 @@ "metadata": {}, "outputs": [], "source": [ + "# INPUT NEEDED:\n", "export KERNEL_NAME=${USER}_kernel\n", - "echo ${KERNEL_NAME}" + "\n", + "echo ${KERNEL_NAME} # double check" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "* Set directory for kernels virtual environment\n", - " - change if you like" + "* Set kernel type\n", + " - private kernel = \"\\${HOME}/.local/\" \n", + " - project kernel = \"\\${PROJECT}/.local/\" " ] }, { @@ -60,19 +63,36 @@ "metadata": {}, "outputs": [], "source": [ - "export KERNEL_VENVS_DIR=${PROJECT}/${USER}/jupyter/kernels/\n", - "mkdir -p ${KERNEL_VENVS_DIR}\n", - "echo ${KERNEL_VENVS_DIR}" + "# INPUT NEEDED:\n", + "export KERNEL_TYPE=private # private or project\n", + "\n", + "###################\n", + "# private kernel\n", + "if [ \"${KERNEL_TYPE}\" == \"private\" ]; then\n", + " export KERNEL_SPECS_PREFIX=${HOME}/.local\n", + " echo \"private kernel\"\n", + "# project kernel\n", + "else\n", + " export KERNEL_SPECS_PREFIX=${PROJECT}/.local\n", + " echo \"project kernel\"\n", + "fi\n", + "export KERNEL_SPECS_DIR=${KERNEL_SPECS_PREFIX}/share/jupyter/kernels\n", + "\n", + "# check if kernel name is unique\n", + "if [ -d \"${KERNEL_SPECS_DIR}/${KERNEL_NAME}\" ]; then\n", + " echo \"ERROR: Kernel already exists in ${KERNEL_SPECS_DIR}/${KERNEL_NAME}\"\n", + " echo \" Rename kernel name or remove directory.\"\n", + "fi\n", + "\n", + "echo ${KERNEL_SPECS_DIR}/${KERNEL_NAME} # double check" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "* Set location of kernel spec\n", - " - select one:\n", - " - personal kernel = \"\\${HOME}/.local/\" \n", - " - project kernel = \"\\${PROJECT}/.local/\" " + "* Set directory for kernels virtual environment\n", + " - change if you like" ] }, { @@ -81,9 +101,17 @@ "metadata": {}, "outputs": [], "source": [ - "export KERNEL_SPECS_DIR=${HOME}/.local/\n", - "#export KERNEL_SPECS_DIR=${PROJECT}/.local/\n", - "echo ${KERNEL_SPECS_DIR}" + "# INPUT NEEDED:\n", + "export KERNEL_VENVS_DIR=${PROJECT}/${USER}/jupyter/kernels\n", + "\n", + "###################\n", + "mkdir -p ${KERNEL_VENVS_DIR}\n", + "if [ \"${KERNEL_TYPE}\" != \"private\" ]; then\n", + " echo \"Please check the permissions and ensure your project partners have read/execute permissions:\"\n", + " namei -l ${KERNEL_VENVS_DIR}\n", + "fi\n", + "\n", + "echo ${KERNEL_VENVS_DIR} # double check" ] }, { @@ -115,9 +143,10 @@ "source": [ "module -q purge\n", "module -q use $OTHERSTAGES \n", - "module -q load Stages/Devel-2019a 2> /dev/null\n", + "module -q load Stages/Devel-2019a 2> /dev/null # any stage can be used\n", "module -q load GCCcore/.8.3.0 2> /dev/null\n", - "module -q load Jupyter" + "module -q load Python/3.6.8 # only Python is required\n", + "module list # double check" ] }, { @@ -153,7 +182,7 @@ "python -m venv --system-site-packages ${KERNEL_VENVS_DIR}/${KERNEL_NAME}\n", "source ${KERNEL_VENVS_DIR}/${KERNEL_NAME}/bin/activate\n", "export PYTHONPATH=${VIRTUAL_ENV}/lib/python3.6/site-packages:${PYTHONPATH}\n", - "echo ${VIRTUAL_ENV}" + "echo ${VIRTUAL_ENV} # double check" ] }, { @@ -169,7 +198,9 @@ "metadata": {}, "outputs": [], "source": [ - "pip install --ignore-installed ipykernel" + "which pip\n", + "pip install --ignore-installed ipykernel\n", + "ls ${VIRTUAL_ENV}/lib/python3.6/site-packages/ # double check" ] }, { @@ -222,7 +253,7 @@ "module load $OTHERSTAGES'\"\n", "module load Stages/Devel-2019a\n", "module load GCCcore/.8.3.0\n", - "module load Jupyter\n", + "module load Python/3.6.8\n", "\n", "# Load extra modules you need for your kernel (as you did in step 1.2)\n", "#module load <module you need>\n", @@ -264,7 +295,8 @@ "metadata": {}, "outputs": [], "source": [ - "python -m ipykernel install --name=${KERNEL_NAME} --prefix ${KERNEL_SPECS_DIR}" + "python -m ipykernel install --name=${KERNEL_NAME} --prefix ${VIRTUAL_ENV}\n", + "export VIRTUAL_ENV_KERNELS=${VIRTUAL_ENV}/share/jupyter/kernels" ] }, { @@ -280,10 +312,9 @@ "metadata": {}, "outputs": [], "source": [ - "mv ${KERNEL_SPECS_DIR}/share/jupyter/kernels/${KERNEL_NAME}/kernel.json ${KERNEL_SPECS_DIR}/share/jupyter/kernels/${KERNEL_NAME}/kernel.json.orig\n", + "mv ${VIRTUAL_ENV_KERNELS}/${KERNEL_NAME}/kernel.json ${VIRTUAL_ENV_KERNELS}/${KERNEL_NAME}/kernel.json.orig\n", "\n", - "echo '\n", - "{\n", + "echo '{\n", " \"argv\": [\n", " \"'${KERNEL_VENVS_DIR}/${KERNEL_NAME}/kernel.sh'\",\n", " \"-m\",\n", @@ -293,7 +324,25 @@ " ],\n", " \"display_name\": \"'${KERNEL_NAME}'\",\n", " \"language\": \"python\"\n", - "}' > ${KERNEL_SPECS_DIR}/share/jupyter/kernels/${KERNEL_NAME}/kernel.json" + "}' > ${VIRTUAL_ENV_KERNELS}/${KERNEL_NAME}/kernel.json" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* 3.3 - Create link to kernel specs" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "cd ${KERNEL_SPECS_DIR}\n", + "ln -s ${VIRTUAL_ENV_KERNELS}/${KERNEL_NAME} .\n", + "ls ${KERNEL_SPECS_DIR} # double check" ] }, { @@ -302,6 +351,22 @@ "source": [ "---" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. Cleanup" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "deactivate" + ] } ], "metadata": {