Zum Inhalt springen
Menü der Dokumentation

Fixierte Abhängigkeiten und Container für Forschungscode

Eine requirements-Datei mit Versionsbereichen installiert, was gerade am neuesten ist. Fixieren Sie exakte Versionen, damit andere die Softwareumgebung hinter Ihren Ergebnissen nachbauen können.

Zuletzt aktualisiert

In Ihrem Bericht

Bereich
Execution
Prüfung
Environment & Dependencies

Warum das wichtig ist

Paket-Updates ändern Standardwerte, beheben Fehler und verändern manchmal Ergebnisse. Eine Softwareumgebung ohne feste Versionen entfernt sich von der, die Ihre Abbildungen erzeugt hat, bis der Code nicht mehr läuft.

Trisovic et al. haben über 9.000 R-Dateien aus Harvard Dataverse in einer sauberen Umgebung ausgeführt: 74 % liefen nicht fehlerfrei durch. Fehler mit Bibliotheken waren häufig, und das Autorenteam empfiehlt, Bibliotheksversionen festzuhalten, idealerweise mit renv (Scientific Data, 2022).

So sieht gute Praxis aus

  • Exakte Versionen für jedes Paket, in einer Lock-Datei (uv.lock, poetry.lock, conda-lock.yml, renv.lock) oder als ==-Pins, dazu die Python- oder R-Version.
  • Ihre handgeschriebene Liste direkter Abhängigkeiten liegt neben der Lock-Datei, damit Updates bewusst bleiben.
  • Ein Container-Rezept, etwa ein Dockerfile oder eine Apptainer-Definition für HPC-Cluster, auf einem Basis-Image mit fester Version statt latest.
  • Ein Abschnitt im README mit Installationsbefehl, benötigter Hardware und CUDA-Version sowie ungefährer Laufzeit.
  • Dateien der Softwareumgebung ändern sich im selben Commit wie der Code, der die Änderung braucht.

So beheben Sie es

Python. Frieren Sie exakte Versionen aus einer sauberen virtuellen Umgebung ein, in der Ihre Analyse läuft:

bash
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.in    # your hand-written list
pip freeze > requirements.txt     # exact == pins for every package

R. renv hält die R-Version und jede Paketversion in renv.lock fest:

R
renv::init()      # once: project library and renv.lock
renv::snapshot()  # after installing or updating packages
renv::restore()   # on another machine: install the locked versions

Container. Starten Sie von einem Basis-Image mit fester Version und installieren Sie aus der fixierten Datei:

Dockerfile
FROM python:3.11.9-slim
WORKDIR /work
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .

Ergänzen Sie dann im README einen Abschnitt Voraussetzungen mit Setup-Befehl, CUDA-Version und gemessener Laufzeit.

Diese Prüfung für Ihr Repository

Jede Analyse liefert Befunde zu dieser Prüfung, mit Dateiverweisen und Korrekturvorschlägen.