Menü der Dokumentation
- Startseite
- Dokumentation
- Reproduzierbarkeitsprüfungen
- Environment & Dependencies
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
- Ihr Codescripts/figure2.py
- Fixierte Paketenumpy==1.26.4
- LaufzeitumgebungPython 3.11
- BetriebssystemUbuntu 22.04
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
Dockerfileoder eine Apptainer-Definition für HPC-Cluster, auf einem Basis-Image mit fester Version stattlatest. - 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:
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 packageR. renv hält die R-Version und jede Paketversion in renv.lock fest:
renv::init() # once: project library and renv.lock
renv::snapshot() # after installing or updating packages
renv::restore() # on another machine: install the locked versionsContainer. Starten Sie von einem Basis-Image mit fester Version und installieren Sie aus der fixierten Datei:
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.
Verwandte Themen
Diese Prüfung für Ihr Repository
Jede Analyse liefert Befunde zu dieser Prüfung, mit Dateiverweisen und Korrekturvorschlägen.