August 4, 2025

:depth: 2
:local:

Two container images have been renamed

  • Sciserver → Legacy 23.01 – the old stable image, kept for reproducibility.

  • Sciserver unstable → Sciserver – the new default image for all fresh sessions.

  • The default Python environment manager is now Mamba (a drop‑in, much faster replacement for Conda).

  • All images now point to the conda‑forge channel instead of the blocked Anaconda repository.

  • Result: you can install virtually any package exactly as before, just use mamba install <pkg> (or conda install <pkg> – both work).

  • Dockerfile repository (semi-public) – All image Dockerfiles are stored at https://gitlab.mpcdf.mpg.de/sciserver/images. Access requires a valid GitLab account; if you have it you can inspect the exact build steps.


Why the change?

Reason

Impact

Anaconda repo blocked on the Garching campus

Packages from the defaults channel could no longer be fetched.

Shift to conda‑forge

conda‑forge provides the overwhelming majority of scientific packages; only a tiny, niche set remains exclusive to Anaconda.

Mamba replaces Conda

Faster dependency resolution, same syntax, fully compatible with existing Conda environments.

Image rename

Prevents confusion between the old stable image and the new default. The “Legacy 23.01” tag is kept for reproducibility.


What you should do

  1. Update any notebook or script that references the old image name – replace Sciserver with Legacy 23.01 (if you need the exact old environment) or with the new Sciserver image.

  2. Use mamba for package installation (e.g., mamba install numpy). conda still works, but mamba is the recommended default.

  3. If you rely on a package that exists only on the Anaconda channel, obtain it from an alternative source (build from source, use a custom channel, or request it from the platform team).

  4. For reproducibility – keep using the “Legacy 23.01” image for long‑term projects that must not change.


More Details

Item

Old

New

Package manager

conda (Anaconda distribution)

mamba (drop‑in replacement, much faster)

Default channel

defaults (Anaconda repo) – now blocked

conda‑forge – fully open and mirrors all needed packages

Container image

Sciserver (Anaconda‑based)

Sciserver (conda‑forge, mamba)

Channel for conda binary

anaconda (the conda package itself) – not present on conda‑forge

conda‑forge provides conda and mamba binaries

Because the Anaconda repo is no longer reachable from the campus network, any environment.yaml that references defaults or anaconda will fail with:

Retrieving notices: ...working... ERROR conda.notices.fetch:get_channel_notice_response(63): 
  Request error <HTTPSConnectionPool(host='repo.anaconda.com', port=443): 
  Max retries exceeded with url: /pkgs/main/notices.json 
  (Caused by ProtocolError('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer')))> 
  for channel: defaults url: https://repo.anaconda.com/pkgs/main/notices.json
ERROR conda.notices.fetch:get_channel_notice_response(63): 
  Request error <HTTPSConnectionPool(host='repo.anaconda.com', port=443):
  Max retries exceeded with url: /pkgs/r/notices.json 
  (Caused by ProtocolError('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer')))> 
  for channel: defaults url: https://repo.anaconda.com/pkgs/r/notices.json

Quick‑fix checklist

Using a previously created environment.yaml file

  1. Replace the channel list – change every occurrence of defaults or anaconda to conda-forge.

  2. Swap conda for mamba – the syntax is identical, so you can keep the file unchanged; just run mamba env create -f environment.yaml.

  3. Validate package names – a few packages that existed only on the Anaconda channel have been renamed or moved (e.g., anaconda-clientconda-build). The conda‑forge channel will raise a clear “PackageNotFoundError” if something is missing.

  4. Re‑export the environment (optional) – after the environment builds successfully, run conda env export --no-builds > environment‑converted.yaml to get a clean file for future use.

For additional Python‑specific environment management tips, see the Environment Management Tips page (environment_management_tips.md).


Example conversion

Original environment.yaml (old image)

name: old‑analysis
channels:
  - defaults
  - conda-forge
dependencies:
  - python=3.8
  - numpy
  - pandas
  - anaconda::scikit-learn
  - anaconda::jupyterlab
  - pip:
    - some‑private‑pkg

Converted environment.yaml (new image)

name: old‑analysis
channels:
  - conda-forge          # single channel is enough; conda‑forge contains defaults‑equivalents
dependencies:
  - python=3.11          # the base image ships 3.11; you can pin 3.8 if required
  - numpy
  - pandas
  - scikit-learn         # now from conda‑forge
  - jupyterlab
  - pip:
    - some‑private‑pkg

Create the environment inside a current Sciserver container

# inside the running JupyterLab pod (or any terminal with mamba)
mamba env create -f environment-converted.yaml
# activate
mamba activate old-analysis

Common pitfalls & how to troubleshoot

Symptom

Likely cause

Fix

PackagesNotFoundError for a listed package

Package only existed on the Anaconda channel

Search for the conda‑forge equivalent (conda search -c conda-forge <pkg>). If none exists, consider installing via pip.

Environment creation hangs for >5 min

Large dependency resolution with conda (instead of mamba)

Ensure you are invoking mamba env create . If mamba is not in PATH, use conda run mamba .

ImportError: No module named 'xxx' after activation

Package installed in a different environment

Verify you activated the newly created env (conda info --envs).

Network timeout when pulling packages

Institutional proxy not configured for the container

Export proxy variables inside the container: export HTTP_PROXY=… HTTPS_PROXY=… (the images already contain a helper script setup_proxy.sh).