Persistent Python Environments
By default, SciServer Compute containers are ephemeral. When you restart a
container, the jupyerlab filesystem (including ~/.conda or ~/.miniforge3) is
reset. Any packages you installed directly into the base environment or a local
environment will disappear.
To avoid reinstalling packages every time you launch a container, you should store your Mamba environments somewhere in your User Storage.
Overview
Create the environment in your persistent storage.
Register the environment as a Jupyter Kernel (so it appears in the launcher).
Reload the environment in any new container.
Step 1: Create a Persistent Environment
Instead of letting Mamba use its default prefix location, we explicitly tell it to create the environment folder inside your mounted personal storage.
As explained under Files and Volumes, you have 2 areas for personal data: Storage and Temporary. For the example below we’ll create a folder under Temporary, but you can choose any location controled by you.
Run this command inside your terminal:
# Create an env named 'my-analysis' inside your persistent folder
# This example automatically adds a few packages to the new environment on creation
mamba create -p ~/workspace/Temporary/$SCISERVER_USER_NAME/scratch/envs/my-analysis python=3.12 ipykernel astropy numpy pandas
What just happened? You used the
-p(prefix) flag instead of-n(name). This forces Mamba to write the environment files to a path that survives container restarts.
Step 2: Make Jupyter Aware of Your Environment
Creating the environment isn’t enough; JupyterLab needs to know it exists to run notebooks against it. You need to install a kernel spec.
Activate your new environment:
# Activate using the full path mamba activate ~/workspace/Temporary/$SCISERVER_USER_NAME/scratch/envs/my-analysis
Install
ipykernel:# In case you didn't add it already mamba install ipykernel
Register the kernel:
python -m ipykernel install --user --name=my-analysis --display-name "My Analysis"
Reload page:
A simple browser reload makes jupyter aware of this new kernel and appear as an option in your list of kernels.
Note: The
--userflag writes the kernel specification to~/.local/share/jupyter/kernels. This directory is ephemeral, but that is okay. The kernel spec is just a small text file pointing to your persistent environment. You can easily recreate it (see Step 3).
Step 3: Reloading in a New Container
When you launch a fresh container, your environment folder is still there at
~/workspace/Temporary/$SCISERVER_USER_NAME/scratch/envs/my-analysis, but
Jupyter won’t see it in the launcher until you re-register the kernel.
The Quick Fix: Because the kernel spec is ephemeral, you simply need to run the registration command again in your new container:
# 1. Activate the persistent env
mamba activate ~/workspace/Temporary/$SCISERVER_USER_NAME/scratch/envs/my-analysis
# 2. Re-register the kernel (if ipykernel is already installed in that env)
python -m ipykernel install --user --name=my-analysis --display-name "My Analysis"
Pro Tip: Create an Alias To avoid typing this every time, add this alias to
your personal ~/.bashrc (also saved in your user folders):
alias link-kernel='python -m ipykernel install --user --name=my-analysis --display-name "Python (My Analysis)"'
Now, every time you start a container, just run link-kernel after activating
your environment.
Summary of Paths
Concept |
Path |
Persistence? |
|---|---|---|
Environment Files |
|
✅ Yes (Survives restarts) |
Mamba Cache (pkgs) |
|
✅ Yes (Optional, see below) |
Kernel Spec |
|
❌ No (Must be re-registered) |
Optional: Move the Mamba Cache
If you want to speed up future installs, you can also point the package download cache to persistent storage so you don’t re-download tarballs.
export MAMBA_ROOT_PREFIX=~/workspace/Storage/$SCISERVER_USER_NAME/persistent/mamba_cache