# Environment setup on the SciNet Teach Cluster Portal: Open **Interactive Apps → JupyterLab**, request one core and 4 GB of memory, then open a terminal in JupyterLab and run: ```bash module load python/3.11.5 scipy-stack/2026a python3 -m venv --system-site-packages ~/mlworkshop-env source ~/mlworkshop-env/bin/activate pip install --no-index --upgrade pip pip install --no-index scikit-learn python -m ipykernel install --user --name mlworkshop --display-name "ML Workshop (Python 3.11)" ``` The SciNet scientific packages are supplied by a module. Make the notebook kernel load that module whenever it starts: ```bash KD=~/.local/share/jupyter/kernels/mlworkshop printf '#!/bin/bash\nmodule load python/3.11.5 scipy-stack/2026a\nsource "$HOME/mlworkshop-env/bin/activate"\nexec python -m ipykernel_launcher "$@"\n' > $KD/kernel_wrapper.sh chmod +x $KD/kernel_wrapper.sh python3 -c "import json,os; p=os.path.expanduser('$KD/kernel.json'); k=json.load(open(p)); k['argv']=[os.path.expanduser('$KD/kernel_wrapper.sh'),'-f','{connection_file}']; json.dump(k,open(p,'w'),indent=1)" ``` Select **ML Workshop (Python 3.11)** as the notebook kernel. Check it with: ```python import sys, numpy, pandas, matplotlib, sklearn print(sys.executable) # should contain mlworkshop-env ``` If an import fails, first check that the notebook is using this kernel.