{"id":857,"date":"2026-07-30T12:22:23","date_gmt":"2026-07-30T12:22:23","guid":{"rendered":"https:\/\/matforge.org\/?p=857","raw":"https:\/\/matforge.org\/?p=857"},"modified":"2026-07-30T12:22:23","modified_gmt":"2026-07-30T12:22:23","slug":"managing-dependencies-scientific-python-lockfiles-environments","status":"publish","type":"post","link":"https:\/\/matforge.org\/de\/managing-dependencies-scientific-python-lockfiles-environments\/","title":{"rendered":"Abh\u00e4ngigkeiten in wissenschaftlichen Python verwalten: Lockfiles, Umgebungen und Reproduzierbarkeit","raw":"Abh\u00e4ngigkeiten in wissenschaftlichen Python verwalten: Lockfiles, Umgebungen und Reproduzierbarkeit"},"content":{"rendered":"<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\"> 8<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span><p>Das Management von Abh\u00e4ngigkeiten in wissenschaftlicher Python ist einer der wichtigsten Teile der reproduzierbaren Forschung. Eine Simulation kann Monate sp\u00e4ter fehlschlagen, da die Paketversionen ge\u00e4ndert, ein Python-Interpreter verschoben oder eine numerische Bibliothek in einer Weise aktualisiert wurde, die sich auf die Ergebnisse auswirkt.<\/p>\n<p>In diesem Leitfaden erfahren Sie, wie Lockfiles, Umgebungen und moderne Paketmanager Forschern helfen, wissenschaftliche Python-Workflows reproduzierbar, tragbar und einfacher zu warten.<\/p>\n<h2>Schl\u00fcssel zum Mitnehmen<\/h2>\n<ul>\n<li>Lockfiles sind einer der wirkungsvollsten Schritte f\u00fcr reproduzierbare wissenschaftliche Python-Workflows.<\/li>\n<li><code>uv<\/code> ist ein schneller moderner Paketmanager und wird zunehmend als Alternative zu PIP, PIP-Tools und Poesie eingesetzt.<\/li>\n<li>PEP 751 f\u00fchrt ein standardisiertes Lockfile-Format <code>pylock.toml<\/code> ein, um die Fragmentierung des Werkzeugs zu reduzieren.<\/li>\n<li>Conda bleibt wichtig f\u00fcr wissenschaftliche Python-Projekte mit Nicht-Python-Abh\u00e4ngigkeiten wie C, C++, MPI, HDF5 und CUDA.<\/li>\n<li>Ihre Werkzeugauswahl sollte Ihrem Workflow entsprechen: <code>uv<\/code> f\u00fcr Geschwindigkeit und Reproduzierbarkeit, Conda f\u00fcr wissenschaftliche und HPC-Stacks und Poesie f\u00fcr ausgereifte Publishing-Pipelines.<\/li>\n<\/ul>\n<h2>Der Hidden Failure-Modus in Scientific Python<\/h2>\n<p>Jeder wissenschaftliche Computerforscher sieht schlie\u00dflich das gleiche Problem. Eine Simulation hat letzten Monat funktioniert, aber jetzt schl\u00e4gt sie mit einer Versionsfehlanpassung fehl. Schlimmer noch, es kann immer noch laufen, aber subtil unterschiedliche Ergebnisse hervorbringen.<\/p>\n<p>Dies ist nicht nur eine Unannehmlichkeit. Es handelt sich um einen Reproduzierbarkeitsfehler. Die Rechenumgebung wurde ge\u00e4ndert, einschlie\u00dflich Paketversionen, Python-Interpreter oder Abh\u00e4ngigkeiten auf niedrigerer Ebene. Ihr Code ist entweder kaputt gegangen oder hat lautlos Ergebnisse erzielt, die nicht mehr dem urspr\u00fcnglichen Lauf entsprechen.<\/p>\n<p>Die Hauptursache sind in der Regel nicht angeheftete Abh\u00e4ngigkeiten. Selbst wenn der Code versionsgesteuert ist, bleibt die Arbeit an eine bestimmte Maschine und Moment in der Zeit gebunden, wenn die Umgebung nicht reproduzierbar ist.<\/p>\n<p>Wissenschaftliche Python macht dieses Problem besonders ernst. Im Gegensatz zu vielen Webprojekten h\u00e4ngt das wissenschaftliche Rechnen h\u00e4ufig von komplexen Ketten numerischer Bibliotheken, kompilierter Pakete und hardwareempfindlicher Builds ab. NumPy, Scipy, Fipy, HDF5, MPI, OpenBlas und bestimmte Python-Versionen m\u00fcssen alle zusammenarbeiten.<\/p>\n<p>Die L\u00f6sung besteht darin, Abh\u00e4ngigkeiten absichtlich zu verwalten. Verwenden Sie Lockfiles, um genaue Versionen einzufrieren, Umgebungen in der Versionskontrolle zu verfolgen und zu dokumentieren, wie die Umgebung neu erstellt werden soll.<\/p>\n<h2>Was ist ein Lockfile?<\/h2>\n<p>Ein Lockfile ist eine Momentaufnahme der genauen Softwareumgebung eines Projekts. Es zeichnet die spezifischen Versionen aller Abh\u00e4ngigkeiten auf, einschlie\u00dflich der Subabh\u00e4ngigkeiten, die bei der letzten Konfiguration des Projekts installiert wurden.<\/p>\n<p>Betrachten Sie es als ein eingefrorenes Rezept f\u00fcr Ihre Software-Setup. Jeder kann die gleiche Umgebung sp\u00e4ter neu erstellen, auch wenn sich die Paketversionen im Upstream ge\u00e4ndert haben.<\/p>\n<h3>ohne Lockfiles<\/h3>\n<pre><code class=\"language-bash\"># requirements.txt without a lockfile\nnumpy&gt;=1.25.0\nscipy&gt;=1.11.0\nfipy&gt;=4.3.0\n\n# On another machine or after a month:\npip install -r requirements.txt\n\n# This might install newer versions:\n# numpy 1.26.x, scipy 1.12.x, or different dependency builds\n<\/code><\/pre>\n<p>Diese Art der Einrichtung erm\u00f6glicht das Verschieben von Paketversionen. Der Code kann immer noch ausgef\u00fchrt werden, aber das numerische Verhalten, die Pr\u00e4zision, das Solververhalten oder die Abh\u00e4ngigkeitsinterne k\u00f6nnen sich \u00e4ndern.<\/p>\n<h3>Mit Lockfiles<\/h3>\n<pre><code class=\"language-bash\"># uv.lock or another lockfile records exact resolved versions\n\nuv sync\n\n# Anyone who runs the sync command gets the same resolved environment\n<\/code><\/pre>\n<p>Dies ist f\u00fcr Simulationsprojekte von Bedeutung, da numerische Bibliotheken die Codepfade \u00fcber Versionen hinweg \u00e4ndern k\u00f6nnen. Das Gleitkommaverhalten kann zwischen Builds unterschiedlich sein. PDE-Solver und wissenschaftliche Frameworks k\u00f6nnen sich auch versions\u00fcbergreifend verhalten.<\/p>\n<p>Ein Lockfile verringert diese Unsicherheit, indem die Installation deterministisch gemacht wird.<\/p>\n<h2>Die Python-Abh\u00e4ngigkeitsverwaltungslandschaft<\/h2>\n<p>Das Python-\u00d6kosystem verf\u00fcgt \u00fcber mehrere praktische Optionen f\u00fcr das Abh\u00e4ngigkeitsmanagement. Jedes Werkzeug hat unterschiedliche St\u00e4rken, und die richtige Wahl h\u00e4ngt davon ab, ob das Projekt rein Python, HPC-fokussiert, paketorientiert oder auf langfristige Reproduzierbarkeit ausgelegt ist.<\/p>\n<h3>UV: Die moderne Schnelloption<\/h3>\n<p><code>uv<\/code> ist ein rostbasierter Paketmanager, der von Astral erstellt wurde. Ziel ist es, mehrere g\u00e4ngige Python-Tools, darunter PIP, PIP-Tools, PIPX, PYENV und VirtualEnv, durch einen einzigen schnellen Workflow zu ersetzen.<\/p>\n<p>Forscher wechseln aus mehreren Gr\u00fcnden zu <code>uv<\/code>:<\/p>\n<ol>\n<li>Geschwindigkeit <code>uv<\/code> kann Pakete viel schneller installieren als herk\u00f6mmliche PIP-basierte Workflows, insbesondere beim Caching.<\/li>\n<li>Universal Lockfile. Ein einziger <code>uv.lock<\/code> kann reproduzierbare Installationen \u00fcber Plattformen hinweg unterst\u00fctzen.<\/li>\n<li>PIP-Kompatibilit\u00e4t. Befehle wie <code>uv pip install<\/code> erleichtern die Migration.<\/li>\n<li>Python-Versionsverwaltung. <code>uv<\/code> Kann Python-Interpreter installieren und verwalten, wodurch die Notwendigkeit separater Tools verringert wird.<\/li>\n<li>Standalone-Installation. <code>uv<\/code> erfordert nicht zuerst die Installation von Python.<\/li>\n<\/ol>\n<p>Verwenden Sie <code>uv<\/code> f\u00fcr neue Projekte, bei denen Geschwindigkeit, Reproduzierbarkeit und einfache Migration von PIP-Materie.<\/p>\n<p>Es ist besonders n\u00fctzlich f\u00fcr:<\/p>\n<ul>\n<li>Neue Simulationsprojekte.<\/li>\n<li>CI \/ CD-Pipelines, bei denen die Installationszeit wichtig ist.<\/li>\n<li>Projekte, die Abh\u00e4ngigkeitsmanagement und Python-Versionsverwaltung zusammen ben\u00f6tigen.<\/li>\n<li>Teams, die von PIP- oder PIP-Tools migrieren.<\/li>\n<\/ul>\n<h4>Grundlegender UV-Workflow<\/h4>\n<pre><code class=\"language-bash\"># Install uv\ncurl -LsSf https:\/\/astral.sh\/uv\/install.sh | sh\n\n# Create a new project with Python 3.11\nuv init my-simulation --python 3.11\ncd my-simulation\n\n# Add dependencies\nuv add numpy scipy fipy\n\n# Generate a lockfile\nuv lock\n\n# Sync to install from the lockfile\nuv sync\n<\/code><\/pre>\n<p>Der Hauptkompromiss ist, dass Poesie immer noch ausgereifte Ver\u00f6ffentlichungsworkflows und erweiterte Abh\u00e4ngigkeitsgruppenhandhabung hat. Wenn Sie ein wissenschaftliches Python-Paket f\u00fcr Pypi pflegen, ist Poesie m\u00f6glicherweise immer noch attraktiv.<\/p>\n<h3>Poesie: Der etablierte Projektmanager<\/h3>\n<p>Poesie ist ein komplettes Projektmanagement-Tool. Es verarbeitet Abh\u00e4ngigkeitsaufl\u00f6sung, virtuelle Umgebungen, Paketerstellung und Ver\u00f6ffentlichung auf Pypi.<\/p>\n<p>Forscher w\u00e4hlen aus mehreren Gr\u00fcnden immer noch Poesie:<\/p>\n<ol>\n<li>Abh\u00e4ngigkeitsgruppen. Poesie kann Entwicklung, Tests, Dokumentation und CI-Abh\u00e4ngigkeiten sauber trennen.<\/li>\n<li>Ver\u00f6ffentlichungsworkflow. Es verf\u00fcgt \u00fcber integrierte Unterst\u00fctzung f\u00fcr das Erstellen und Ver\u00f6ffentlichen von Paketen.<\/li>\n<li>reifes \u00d6kosystem. Poesie hat jahrelange Produktionsnutzung, umfangreiche Dokumentation und eine gro\u00dfe Gemeinschaft.<\/li>\n<\/ol>\n<p>Verwenden Sie Poesie, wenn:<\/p>\n<ul>\n<li>Sie ver\u00f6ffentlichen ein Python-Paket in Pypi.<\/li>\n<li>Sie ben\u00f6tigen eine ausgereifte Abh\u00e4ngigkeitsgruppenverwaltung.<\/li>\n<li>Ihr Team sch\u00e4tzt eine lange Erfolgsbilanz und etablierte Dokumentationen.<\/li>\n<\/ul>\n<p>Der Kompromiss ist Geschwindigkeit. Poesie kann l\u00e4nger als <code>uv<\/code> f\u00fcr Kaltinstallationen, Lockfile-Generierung und Paketerg\u00e4nzungen dauern. Bei kleinen Projekten kann das keine Rolle spielen. Bei gro\u00dfen Projekten und CI-Pipelines kann sich der Unterschied bemerkbar machen.<\/p>\n<h3>Conda: Das wissenschaftliche Heftklammern<\/h3>\n<p>Conda bleibt eines der wichtigsten Werkzeuge f\u00fcr wissenschaftliche Python, insbesondere wenn das Projekt keine Abh\u00e4ngigkeiten ben\u00f6tigt.<\/p>\n<p>Conda ist f\u00fcr die Forschung n\u00fctzlich, da es Python-Pakete, R-Pakete, kompilierte Bibliotheken, Compiler, MPI, HDF5, CUDA und andere Abh\u00e4ngigkeiten auf Systemebene in einer Umgebung verwalten kann.<\/p>\n<p>Conda ist wichtig, wenn:<\/p>\n<ul>\n<li>Sie ben\u00f6tigen Nicht-Python-Abh\u00e4ngigkeiten wie C, C++, MPI, HDF5, FFTW oder CUDA.<\/li>\n<li>Sie zielen auf HPC-Cluster ab.<\/li>\n<li>Ihre wissenschaftlichen Bibliotheken h\u00e4ngen von kompiliertem C- oder Fortran-Code ab.<\/li>\n<li>Sie arbeiten \u00fcber Python und R.<\/li>\n<\/ul>\n<p>Der Kompromiss besteht darin, dass Conda f\u00fcr die Aufl\u00f6sung der Abh\u00e4ngigkeit von Python-Abh\u00e4ngigkeit langsamer als <code>uv<\/code>  sein kann und m\u00f6glicherweise nicht so einfach universelle plattform\u00fcbergreifende Lockfiles erzeugt.<\/p>\n<h4>Grundlegender Conda-Workflow<\/h4>\n<pre><code class=\"language-bash\"># Create environment\nconda create -n my-sim python=3.11\nconda activate my-sim\n\n# Install packages, including non-Python dependencies\nconda install numpy scipy hdf5 openmpi\n\n# Export to environment file\nconda env export --no-builds | grep -v \"prefix:\" &gt; environment.yml\n\n# Restore the environment\nconda env create -f environment.yml\n<\/code><\/pre>\n<h3>PIP-Tools: Die minimalistische Option<\/h3>\n<p><code>pip-tools<\/code> \u00dcberbr\u00fcckt herk\u00f6mmliche PIP-Workflows und Lockfiles. Es ist leicht und bleibt in der N\u00e4he der PIP-Oberfl\u00e4che.<\/p>\n<p>Verwenden Sie PIP-Tools, wenn:<\/p>\n<ul>\n<li>Sie wollen einen einfachen Ansatz.<\/li>\n<li>Sie migrieren von PIP und m\u00f6chten kein gr\u00f6\u00dferes Tool lernen.<\/li>\n<li>Ihr Projekt ist klein und ben\u00f6tigt keine fortgeschrittenen Abh\u00e4ngigkeitsgruppen.<\/li>\n<\/ul>\n<p>Der Kompromiss besteht darin, dass PIP-Tools plattformspezifische Ausgabedateien generieren k\u00f6nnen. Es ist auch weniger umfassend als Poesie oder <code>uv<\/code> .<\/p>\n<h2>PEP 751: Die Zukunft der Lockfiles<\/h2>\n<p>PEP 751 schl\u00e4gt ein standardisiertes Dateiformat f\u00fcr die Aufzeichnung von Python-Abh\u00e4ngigkeiten vor, damit Umgebungen reproduzierbar installiert werden k\u00f6nnen. Dieses Format hei\u00dft <code>pylock.toml<\/code>.<\/p>\n<h3>Was es l\u00f6st<\/h3>\n<p>Python-Abh\u00e4ngigkeitswerkzeuge haben in der Vergangenheit verschiedene Lockfile-Formate verwendet. PDM, PIP Freeze, PIP-Tools, Poesie und <code>uv<\/code> Alle n\u00e4heren sich die Umgebungs- sperrung.<\/p>\n<p>Dies f\u00fchrt zu mehreren Problemen:<\/p>\n<ul>\n<li>Verk\u00e4ufersperre. Es kann schwierig sein, zwischen Werkzeugen zu wechseln.<\/li>\n<li>Werkzeugfragmentierung. Sicherheitsscanner und Automatisierungstools unterst\u00fctzen m\u00f6glicherweise nur einige Formate.<\/li>\n<li>Pr\u00fcfungsschwierigkeiten. Unterschiedliche Formate haben unterschiedliche Syntax und Konventionen.<\/li>\n<\/ul>\n<p>PEP 751 schl\u00e4gt <code>pylock.toml<\/code> als standardisiertes Format vor.<\/p>\n<h3>Warum es f\u00fcr wissenschaftliche Python wichtig ist<\/h3>\n<p>Das vorgeschlagene Format ist f\u00fcr die Forschung n\u00fctzlich, da es:<\/p>\n<ul>\n<li>Von Menschen lesbar, mit toml.<\/li>\n<li>Maschinengeneriert, damit Werkzeuge konsistente Ausgabe schreiben k\u00f6nnen.<\/li>\n<li>Verbrauchsmaterial durch Nicht-Python-Tools.<\/li>\n<li>Sicher durch Design, mit kryptografischen Hashes f\u00fcr den Schutz der Lieferkette.<\/li>\n<li>Flexibel genug, um mehrere Umgebungen oder Abh\u00e4ngigkeitsgruppen darzustellen.<\/li>\n<\/ul>\n<p>Sobald <code>pylock.toml<\/code>  weit verbreitet ist, kann der Bedarf an werkzeugspezifischen Lockfile-Formaten verringert werden. F\u00fcr Forscher bedeutet dies eine bessere Interoperabilit\u00e4t. Ein Lockfile k\u00f6nnte von jedem konformen Tool verbraucht und einfacher von externen Diensten auditiert werden.<\/p>\n<h2>Das Reproduzierbarkeitsspektrum<\/h2>\n<p>Reproduzierbarkeit ist ein Spektrum. Das richtige Niveau ist abh\u00e4ngig von Risiko, Projektdauer und Ver\u00f6ffentlichungsanforderungen.<\/p>\n<table class=\"custom-table\">\n<tbody>\n<tr>\n<th>Ebene<\/th>\n<th>Sich n\u00e4hern<\/th>\n<th>Kosten<\/th>\n<th>Reproduzierbarkeit<\/th>\n<th>am besten f\u00fcr<\/th>\n<\/tr>\n<tr>\n<td>Gut<\/td>\n<td>Dokumentabh\u00e4ngigkeiten in Readme<\/td>\n<td>Minimal<\/td>\n<td>Manuelle \u00dcberpr\u00fcfung<\/td>\n<td>Schnelle Skripte und Tutorials<\/td>\n<\/tr>\n<tr>\n<td>Besser<\/td>\n<td>Umgebungsdatei wie <code>requirements.txt<\/code> oder <code>environment.yml<\/code><\/td>\n<td>Niedrig<\/td>\n<td>Automatisierte Installation<\/td>\n<td>Gemeinsame Projekte und Mitarbeiter<\/td>\n<\/tr>\n<tr>\n<td>Beste<\/td>\n<td>Lockfile Plus versionsgesteuerte Umgebung<\/td>\n<td>M\u00e4\u00dfig<\/td>\n<td>Exakte Reproduktion<\/td>\n<td>Publikationen und Langzeitarchive<\/td>\n<\/tr>\n<tr>\n<td>Maximal<\/td>\n<td>Containerisierung mit Docker oder Singularit\u00e4t<\/td>\n<td>Hoch<\/td>\n<td>Starke Isolation<\/td>\n<td>HPC und ver\u00f6ffentlichte Workflows<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>F\u00fcr Forschungsprojekte gilt es, die exakten Versionen in <code>requirements.txt<\/code> oder <code>environment.yml<\/code> anzuheften. Der empfohlene Ansatz ist die Verwendung von <code>uv lock<\/code>  oder Conda-Export, um eine reproduzierbare Umgebungsdatei zu erstellen. Die beste Vorgehensweise besteht darin, diese Datei in git zu verfolgen und zu dokumentieren, wie die Umgebung in der Readme neu erstellt wird.<\/p>\n<h2>Praktische Workflows f\u00fcr wissenschaftliche Projekte<\/h2>\n<h3>Workflow 1: Neues Simulationsprojekt mit UV<\/h3>\n<pre><code class=\"language-bash\"># Initialize project\nuv init my-simulation --python 3.11\ncd my-simulation\n\n# Add core dependencies\nuv add numpy scipy matplotlib\n\n# Add scientific libraries\nuv add fipy mpmath\n\n# Generate lockfile\nuv lock\n\n# Add dev dependencies\nuv add --group dev pytest black ruff\n\n# Commit everything\ngit add pyproject.toml uv.lock\ngit commit -m \"Initial project structure with pinned dependencies\"\n<\/code><\/pre>\n<p>Dies funktioniert, weil die Datei <code>uv.lock<\/code> an git festgeschrieben ist. Jeder, der das Repository klont und <code>uv sync<\/code> ausf\u00fchrt, erh\u00e4lt die gleichen aufgel\u00f6sten Versionen.<\/p>\n<h3>Workflow 2: HPC-Projekt mit Conda und Singularit\u00e4t<\/h3>\n<pre><code class=\"language-bash\"># On your workstation\nconda create -n hpc-sim python=3.11\nconda activate hpc-sim\nconda install numpy scipy hdf5 openmpi\n\n# Export environment\nconda env export --no-builds | grep -v \"prefix:\" &gt; environment.yml\n\n# Build Singularity image from Docker\ndocker build -t my-sim:latest .\nsingularity build my-sim.sif docker:\/\/my-sim:latest\n\n# Transfer to HPC cluster\nscp my-sim.sif hpc-cluster:\/scratch\/\n<\/code><\/pre>\n<p>Dies funktioniert, weil Conda Abh\u00e4ngigkeiten von der Workstation verwaltet, w\u00e4hrend Singularity HPC-kompatible Containerisierung bereitstellt. Die Datei <code>environment.yml<\/code> kann versionsgesteuert und auf einem anderen System neu erstellt werden.<\/p>\n<h3>Workflow 3: Migration von PIP zu UV<\/h3>\n<pre><code class=\"language-bash\"># Start with existing requirements.txt\npip install uv\n\n# Replace pip with uv for installs\nuv pip install -r requirements.txt\n\n# Generate a uv lockfile\nuv lock\n\n# From now on, use uv sync instead of pip install\nuv sync\n<\/code><\/pre>\n<p>Dieser Migrationspfad ist einfach, da <code>uv<\/code> mit vielen PIP-Workflows kompatibel ist. Die <code>uv.lock<\/code>-Datei wird zur einzigen Wahrheitsquelle f\u00fcr die Umgebung.<\/p>\n<h2>h\u00e4ufige Fehler und wie man sie vermeidet<\/h2>\n<h3>Fehler 1: Verwenden nicht angehefteter Abh\u00e4ngigkeiten<\/h3>\n<pre><code class=\"language-python\"># WRONG: Allows automatic updates\nnumpy&gt;=1.0\nscipy&gt;=1.0\n\n# RIGHT: Pin exact versions\nnumpy==1.26.4\nscipy==1.11.4\n<\/code><\/pre>\n<p>Kleinere Versions\u00e4nderungen k\u00f6nnen numerisches Verhalten, Konvergenzkriterien oder Gleitkomma-Pr\u00e4zision ver\u00e4ndern. Pin exakte Versionen, wenn die Reproduzierbarkeit wichtig ist.<\/p>\n<h3>Fehler 2: Kein Lockfile festlegen<\/h3>\n<p>Wenn Ihr Repository <code>pyproject.toml<\/code> aber kein Lockfile enth\u00e4lt, ist Ihr Projekt nicht vollst\u00e4ndig reproduzierbar. Ein Lockfile ist die Mindestanforderung f\u00fcr deterministische Builds.<\/p>\n<p>Generieren Sie ein Lockfile und begehen Sie es:<\/p>\n<pre><code class=\"language-bash\">uv lock  # or conda export\ngit add uv.lock  # or environment.yml\ngit commit -m \"Add lockfile for reproducible environment\"\n<\/code><\/pre>\n<h3>Fehler 3: Sub-Abh\u00e4ngigkeiten ignorieren<\/h3>\n<p>Selbst wenn Sie Pakete der obersten Ebene anheften, k\u00f6nnen Unterabh\u00e4ngigkeiten das Verhalten \u00e4ndern.<\/p>\n<pre><code class=\"language-python\"># If you pin fipy but not its dependencies:\n# numpy, mpmath, and other packages may upgrade independently\n<\/code><\/pre>\n<p>Verwenden Sie ein Tool, das den vollst\u00e4ndigen Abh\u00e4ngigkeitsbaum aufl\u00f6st und anheftet, z. B. <code>uv<\/code>, Conda oder Poesie.<\/p>\n<h3>Fehler 4: Plattformspezifische Umgebungen<\/h3>\n<p>Einige Tools k\u00f6nnen plattformspezifische Ausgaben generieren. Wenn Sie unter macOS entwickeln, aber unter Linux bereitstellen, k\u00f6nnen Umgebungsdateien fehlschlagen oder unterschiedlich aufl\u00f6sen.<\/p>\n<p>Verwenden Sie Tools, die plattform\u00fcbergreifende Lockfiles unterst\u00fctzen, oder generieren Sie Lockfiles auf der Zielplattform.<\/p>\n<h3>Fehler 5: Externe Datenabh\u00e4ngigkeiten<\/h3>\n<p>Wenn eine Simulation von externen APIs oder Datenbanken abh\u00e4ngt, die sich \u00e4ndern, kann die Reproduzierbarkeit bei gesperrter Python-Umgebung brechen.<\/p>\n<p>Snapshot externe Daten, wenn m\u00f6glich. Wenn dies nicht m\u00f6glich ist, verwenden Sie versionierte API-Endpunkte und dokumentieren Sie die genaue Version oder das Zugriffsdatum.<\/p>\n<h2>Was wir empfehlen: ein Entscheidungsrahmen<\/h2>\n<p>Verwenden Sie dieses Entscheidungsframework bei der Auswahl eines Abh\u00e4ngigkeitsmanagement-Tools f\u00fcr ein wissenschaftliches Python-Projekt.<\/p>\n<ol>\n<li>\n<p>Ben\u00f6tigen Sie Nicht-Python-Abh\u00e4ngigkeiten wie C, C++, MPI, CUDA, HDF5 oder FFTW?<\/p>\n<ul>\n<li>Ja: Verwenden Sie Conda oder Conda in Docker oder Singularity.<\/li>\n<li>Nein: Weiter zur n\u00e4chsten Frage.<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>Ver\u00f6ffentlichen Sie ein Python-Paket f\u00fcr Pypi?<\/p>\n<ul>\n<li>Ja: Betrachten Sie Poesie f\u00fcr ausgereifte Ver\u00f6ffentlichungsworkflows oder <code>uv<\/code> f\u00fcr Geschwindigkeit.<\/li>\n<li>Nein: Weiter zur n\u00e4chsten Frage.<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>Arbeiten Sie in CI \/ CD-Pipelines?<\/p>\n<ul>\n<li>Ja: Verwenden Sie <code>uv<\/code>, da schnellere Installationen die CI-Zeit verk\u00fcrzen k\u00f6nnen.<\/li>\n<li>Nein: Entweder <code>uv<\/code>, Conda oder Poesie k\u00f6nnen je nach Projekt funktionieren.<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>Wie wichtig ist die plattform\u00fcbergreifende Kompatibilit\u00e4t?<\/p>\n<ul>\n<li>Hoch: Verwenden Sie <code>uv<\/code> , wo ein universelles Lockfile Ihren Anforderungen entspricht.<\/li>\n<li>Moderat: Conda kann gut funktionieren, insbesondere auf Unix-\u00e4hnlichen Forschungssystemen.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p>F\u00fcr die meisten neuen Forschungsprojekte ist <code>uv<\/code> eine starke Standardeinstellung, wenn Sie Geschwindigkeit und Reproduzierbarkeit ben\u00f6tigen. Kombinieren Sie f\u00fcr HPC-Projekte oder Workflows mit Nicht-Python-Abh\u00e4ngigkeiten Conda mit Containerisierung.<\/p>\n<h2>Zusammenfassung<\/h2>\n<p>Das Verwalten von Abh\u00e4ngigkeiten in wissenschaftlichem Python ist nicht optional. Es ist eine Grundlage reproduzierbarer Forschung.<\/p>\n<p>Die wichtigsten Punkte sind:<\/p>\n<ol>\n<li>Lockfiles sind unerl\u00e4sslich. Pin genaue Versionen und verfolgen Sie sie in git.<\/li>\n<li><code>uv<\/code> ist eine starke moderne Option f\u00fcr schnelle, reproduzierbare Umgebungen.<\/li>\n<li>Conda bleibt f\u00fcr wissenschaftliche Stacks mit Nicht-Python-Abh\u00e4ngigkeiten von entscheidender Bedeutung.<\/li>\n<li>PEP 751 zielt darauf ab, Lockfile-Formate durch <code>pylock.toml<\/code> zu vereinheitlichen.<\/li>\n<li>Eine Readme mit \u00fcbersichtlichen Installationsanweisungen ist die Mindestdokumentation, die jedes Projekt ben\u00f6tigt.<\/li>\n<\/ol>\n<p>Beginnen Sie mit der Pr\u00fcfung aktueller Projekte. \u00dcberpr\u00fcfen Sie, ob Umgebungen dokumentiert und Abh\u00e4ngigkeiten angeheftet sind. Konvertieren Sie ein Projekt, um ein Lockfile zu verwenden. Die Vorabkosten zahlen sich aus, wenn Sie oder ein anderer Forscher die Simulation Monate oder Jahre sp\u00e4ter mit Zuversicht erneut ausf\u00fchren m\u00fcssen.<\/p>\n<h2>Verwandte Anleitungen<\/h2>\n<ul>\n<li><a href=\"https:\/\/matforge.org\/reproducible-research-workflows-docker-and-conda-for-simulation-projects\/\"> Reproduzierbare Forschungsworkflows: Docker und Conda f\u00fcr Simulationsprojekte <\/a> &#8211; Erfahren Sie, wie sich Docker und Conda f\u00fcr die Reproduzierbarkeit der Simulation erg\u00e4nzen.<\/li>\n<li><a href=\"https:\/\/matforge.org\/unit-testing-scientific-code-pytest-strategies-research-projects\/\">Einheitentest f\u00fcr wissenschaftlichen Code: PYTest-Strategien f\u00fcr Forschungsprojekte<\/a> \u2014 CI-Muster f\u00fcr reproduzierbare Simulation Pipelines.<\/li>\n<li><a href=\"https:\/\/matforge.org\/gpu-acceleration-for-fipy-simulations-cupy-and-numba-integration-guide\/\">GPU-Beschleunigung f\u00fcr FIPY-Simulationen: Cupy- und Numba-Integrationshandbuch<\/a> \u2014 GPU verwalten Abh\u00e4ngigkeiten mit Pypi und Conda.<\/li>\n<li><a href=\"https:\/\/matforge.org\/working-through-your-first-fipy-example\/\"> Durcharbeiten Ihres ersten FIPY-Beispiels<\/a> &#8211; Beginnen Sie mit einem von Abh\u00e4ngigkeiten verwalteten FIPY-Projekt.<\/li>\n<\/ul>\n<h2>Referenzen und Weiterlesen<\/h2>\n<ul>\n<li><a href=\"https:\/\/docs.astral.sh\/uv\/\">UV-Dokumentation<\/a> &#8211; Offizielle Anleitung f\u00fcr den rostbasierten Paketmanager.<\/li>\n<li><a href=\"https:\/\/peps.python.org\/pep-0751\/\">Pep 751: pylock.toml-Spezifikation <\/a> &#8211; Standardisiertes Lockfile-Format.<\/li>\n<li><a href=\"https:\/\/book.the-turing-way.org\/reproducible-research\/overview\/overview-definitions\/\"> Der Turing-Weg: Reproduzierbare Forschungsdefinitionen <\/a> &#8211; Gemeinschaftsstandards f\u00fcr reproduzierbare Workflows.<\/li>\n<li><a href=\"https:\/\/lincolnloop.github.io\/python-package-manager-shootout\/\">Shootout in Python-Paketmanager<\/a> \u2014 Benchmarks zum Vergleich von UV, Poesie, PIP-Tools, PDM und Pixi.<\/li>\n<li><a href=\"https:\/\/wagtail.org\/blog\/uv-overtakes-poetry\/\">Wagtail: UV-\u00fcberholt Poesie <\/a> &#8211; Akzeptanzsignal f\u00fcr die Industrie.<\/li>\n<\/ul>\n","protected":false,"raw":"<p>Das Management von Abh\u00e4ngigkeiten in wissenschaftlicher Python ist einer der wichtigsten Teile der reproduzierbaren Forschung. Eine Simulation kann Monate sp\u00e4ter fehlschlagen, da die Paketversionen ge\u00e4ndert, ein Python-Interpreter verschoben oder eine numerische Bibliothek in einer Weise aktualisiert wurde, die sich auf die Ergebnisse auswirkt.<\/p>\n<p>In diesem Leitfaden erfahren Sie, wie Lockfiles, Umgebungen und moderne Paketmanager Forschern helfen, wissenschaftliche Python-Workflows reproduzierbar, tragbar und einfacher zu warten.<\/p>\n<h2>Schl\u00fcssel zum Mitnehmen<\/h2>\n<ul>\n<li>Lockfiles sind einer der wirkungsvollsten Schritte f\u00fcr reproduzierbare wissenschaftliche Python-Workflows.<\/li>\n<li><code>uv<\/code> ist ein schneller moderner Paketmanager und wird zunehmend als Alternative zu PIP, PIP-Tools und Poesie eingesetzt.<\/li>\n<li>PEP 751 f\u00fchrt ein standardisiertes Lockfile-Format <code>pylock.toml<\/code> ein, um die Fragmentierung des Werkzeugs zu reduzieren.<\/li>\n<li>Conda bleibt wichtig f\u00fcr wissenschaftliche Python-Projekte mit Nicht-Python-Abh\u00e4ngigkeiten wie C, C++, MPI, HDF5 und CUDA.<\/li>\n<li>Ihre Werkzeugauswahl sollte Ihrem Workflow entsprechen: <code>uv<\/code> f\u00fcr Geschwindigkeit und Reproduzierbarkeit, Conda f\u00fcr wissenschaftliche und HPC-Stacks und Poesie f\u00fcr ausgereifte Publishing-Pipelines.<\/li>\n<\/ul>\n<h2>Der Hidden Failure-Modus in Scientific Python<\/h2>\n<p>Jeder wissenschaftliche Computerforscher sieht schlie\u00dflich das gleiche Problem. Eine Simulation hat letzten Monat funktioniert, aber jetzt schl\u00e4gt sie mit einer Versionsfehlanpassung fehl. Schlimmer noch, es kann immer noch laufen, aber subtil unterschiedliche Ergebnisse hervorbringen.<\/p>\n<p>Dies ist nicht nur eine Unannehmlichkeit. Es handelt sich um einen Reproduzierbarkeitsfehler. Die Rechenumgebung wurde ge\u00e4ndert, einschlie\u00dflich Paketversionen, Python-Interpreter oder Abh\u00e4ngigkeiten auf niedrigerer Ebene. Ihr Code ist entweder kaputt gegangen oder hat lautlos Ergebnisse erzielt, die nicht mehr dem urspr\u00fcnglichen Lauf entsprechen.<\/p>\n<p>Die Hauptursache sind in der Regel nicht angeheftete Abh\u00e4ngigkeiten. Selbst wenn der Code versionsgesteuert ist, bleibt die Arbeit an eine bestimmte Maschine und Moment in der Zeit gebunden, wenn die Umgebung nicht reproduzierbar ist.<\/p>\n<p>Wissenschaftliche Python macht dieses Problem besonders ernst. Im Gegensatz zu vielen Webprojekten h\u00e4ngt das wissenschaftliche Rechnen h\u00e4ufig von komplexen Ketten numerischer Bibliotheken, kompilierter Pakete und hardwareempfindlicher Builds ab. NumPy, Scipy, Fipy, HDF5, MPI, OpenBlas und bestimmte Python-Versionen m\u00fcssen alle zusammenarbeiten.<\/p>\n<p>Die L\u00f6sung besteht darin, Abh\u00e4ngigkeiten absichtlich zu verwalten. Verwenden Sie Lockfiles, um genaue Versionen einzufrieren, Umgebungen in der Versionskontrolle zu verfolgen und zu dokumentieren, wie die Umgebung neu erstellt werden soll.<\/p>\n<h2>Was ist ein Lockfile?<\/h2>\n<p>Ein Lockfile ist eine Momentaufnahme der genauen Softwareumgebung eines Projekts. Es zeichnet die spezifischen Versionen aller Abh\u00e4ngigkeiten auf, einschlie\u00dflich der Subabh\u00e4ngigkeiten, die bei der letzten Konfiguration des Projekts installiert wurden.<\/p>\n<p>Betrachten Sie es als ein eingefrorenes Rezept f\u00fcr Ihre Software-Setup. Jeder kann die gleiche Umgebung sp\u00e4ter neu erstellen, auch wenn sich die Paketversionen im Upstream ge\u00e4ndert haben.<\/p>\n<h3>ohne Lockfiles<\/h3>\n<pre><code class=\"language-bash\"># requirements.txt without a lockfile\nnumpy&gt;=1.25.0\nscipy&gt;=1.11.0\nfipy&gt;=4.3.0\n\n# On another machine or after a month:\npip install -r requirements.txt\n\n# This might install newer versions:\n# numpy 1.26.x, scipy 1.12.x, or different dependency builds\n<\/code><\/pre>\n<p>Diese Art der Einrichtung erm\u00f6glicht das Verschieben von Paketversionen. Der Code kann immer noch ausgef\u00fchrt werden, aber das numerische Verhalten, die Pr\u00e4zision, das Solververhalten oder die Abh\u00e4ngigkeitsinterne k\u00f6nnen sich \u00e4ndern.<\/p>\n<h3>Mit Lockfiles<\/h3>\n<pre><code class=\"language-bash\"># uv.lock or another lockfile records exact resolved versions\n\nuv sync\n\n# Anyone who runs the sync command gets the same resolved environment\n<\/code><\/pre>\n<p>Dies ist f\u00fcr Simulationsprojekte von Bedeutung, da numerische Bibliotheken die Codepfade \u00fcber Versionen hinweg \u00e4ndern k\u00f6nnen. Das Gleitkommaverhalten kann zwischen Builds unterschiedlich sein. PDE-Solver und wissenschaftliche Frameworks k\u00f6nnen sich auch versions\u00fcbergreifend verhalten.<\/p>\n<p>Ein Lockfile verringert diese Unsicherheit, indem die Installation deterministisch gemacht wird.<\/p>\n<h2>Die Python-Abh\u00e4ngigkeitsverwaltungslandschaft<\/h2>\n<p>Das Python-\u00d6kosystem verf\u00fcgt \u00fcber mehrere praktische Optionen f\u00fcr das Abh\u00e4ngigkeitsmanagement. Jedes Werkzeug hat unterschiedliche St\u00e4rken, und die richtige Wahl h\u00e4ngt davon ab, ob das Projekt rein Python, HPC-fokussiert, paketorientiert oder auf langfristige Reproduzierbarkeit ausgelegt ist.<\/p>\n<h3>UV: Die moderne Schnelloption<\/h3>\n<p><code>uv<\/code> ist ein rostbasierter Paketmanager, der von Astral erstellt wurde. Ziel ist es, mehrere g\u00e4ngige Python-Tools, darunter PIP, PIP-Tools, PIPX, PYENV und VirtualEnv, durch einen einzigen schnellen Workflow zu ersetzen.<\/p>\n<p>Forscher wechseln aus mehreren Gr\u00fcnden zu <code>uv<\/code>:<\/p>\n<ol>\n<li>Geschwindigkeit <code>uv<\/code> kann Pakete viel schneller installieren als herk\u00f6mmliche PIP-basierte Workflows, insbesondere beim Caching.<\/li>\n<li>Universal Lockfile. Ein einziger <code>uv.lock<\/code> kann reproduzierbare Installationen \u00fcber Plattformen hinweg unterst\u00fctzen.<\/li>\n<li>PIP-Kompatibilit\u00e4t. Befehle wie <code>uv pip install<\/code> erleichtern die Migration.<\/li>\n<li>Python-Versionsverwaltung. <code>uv<\/code> Kann Python-Interpreter installieren und verwalten, wodurch die Notwendigkeit separater Tools verringert wird.<\/li>\n<li>Standalone-Installation. <code>uv<\/code> erfordert nicht zuerst die Installation von Python.<\/li>\n<\/ol>\n<p>Verwenden Sie <code>uv<\/code> f\u00fcr neue Projekte, bei denen Geschwindigkeit, Reproduzierbarkeit und einfache Migration von PIP-Materie.<\/p>\n<p>Es ist besonders n\u00fctzlich f\u00fcr:<\/p>\n<ul>\n<li>Neue Simulationsprojekte.<\/li>\n<li>CI \/ CD-Pipelines, bei denen die Installationszeit wichtig ist.<\/li>\n<li>Projekte, die Abh\u00e4ngigkeitsmanagement und Python-Versionsverwaltung zusammen ben\u00f6tigen.<\/li>\n<li>Teams, die von PIP- oder PIP-Tools migrieren.<\/li>\n<\/ul>\n<h4>Grundlegender UV-Workflow<\/h4>\n<pre><code class=\"language-bash\"># Install uv\ncurl -LsSf https:\/\/astral.sh\/uv\/install.sh | sh\n\n# Create a new project with Python 3.11\nuv init my-simulation --python 3.11\ncd my-simulation\n\n# Add dependencies\nuv add numpy scipy fipy\n\n# Generate a lockfile\nuv lock\n\n# Sync to install from the lockfile\nuv sync\n<\/code><\/pre>\n<p>Der Hauptkompromiss ist, dass Poesie immer noch ausgereifte Ver\u00f6ffentlichungsworkflows und erweiterte Abh\u00e4ngigkeitsgruppenhandhabung hat. Wenn Sie ein wissenschaftliches Python-Paket f\u00fcr Pypi pflegen, ist Poesie m\u00f6glicherweise immer noch attraktiv.<\/p>\n<h3>Poesie: Der etablierte Projektmanager<\/h3>\n<p>Poesie ist ein komplettes Projektmanagement-Tool. Es verarbeitet Abh\u00e4ngigkeitsaufl\u00f6sung, virtuelle Umgebungen, Paketerstellung und Ver\u00f6ffentlichung auf Pypi.<\/p>\n<p>Forscher w\u00e4hlen aus mehreren Gr\u00fcnden immer noch Poesie:<\/p>\n<ol>\n<li>Abh\u00e4ngigkeitsgruppen. Poesie kann Entwicklung, Tests, Dokumentation und CI-Abh\u00e4ngigkeiten sauber trennen.<\/li>\n<li>Ver\u00f6ffentlichungsworkflow. Es verf\u00fcgt \u00fcber integrierte Unterst\u00fctzung f\u00fcr das Erstellen und Ver\u00f6ffentlichen von Paketen.<\/li>\n<li>reifes \u00d6kosystem. Poesie hat jahrelange Produktionsnutzung, umfangreiche Dokumentation und eine gro\u00dfe Gemeinschaft.<\/li>\n<\/ol>\n<p>Verwenden Sie Poesie, wenn:<\/p>\n<ul>\n<li>Sie ver\u00f6ffentlichen ein Python-Paket in Pypi.<\/li>\n<li>Sie ben\u00f6tigen eine ausgereifte Abh\u00e4ngigkeitsgruppenverwaltung.<\/li>\n<li>Ihr Team sch\u00e4tzt eine lange Erfolgsbilanz und etablierte Dokumentationen.<\/li>\n<\/ul>\n<p>Der Kompromiss ist Geschwindigkeit. Poesie kann l\u00e4nger als <code>uv<\/code> f\u00fcr Kaltinstallationen, Lockfile-Generierung und Paketerg\u00e4nzungen dauern. Bei kleinen Projekten kann das keine Rolle spielen. Bei gro\u00dfen Projekten und CI-Pipelines kann sich der Unterschied bemerkbar machen.<\/p>\n<h3>Conda: Das wissenschaftliche Heftklammern<\/h3>\n<p>Conda bleibt eines der wichtigsten Werkzeuge f\u00fcr wissenschaftliche Python, insbesondere wenn das Projekt keine Abh\u00e4ngigkeiten ben\u00f6tigt.<\/p>\n<p>Conda ist f\u00fcr die Forschung n\u00fctzlich, da es Python-Pakete, R-Pakete, kompilierte Bibliotheken, Compiler, MPI, HDF5, CUDA und andere Abh\u00e4ngigkeiten auf Systemebene in einer Umgebung verwalten kann.<\/p>\n<p>Conda ist wichtig, wenn:<\/p>\n<ul>\n<li>Sie ben\u00f6tigen Nicht-Python-Abh\u00e4ngigkeiten wie C, C++, MPI, HDF5, FFTW oder CUDA.<\/li>\n<li>Sie zielen auf HPC-Cluster ab.<\/li>\n<li>Ihre wissenschaftlichen Bibliotheken h\u00e4ngen von kompiliertem C- oder Fortran-Code ab.<\/li>\n<li>Sie arbeiten \u00fcber Python und R.<\/li>\n<\/ul>\n<p>Der Kompromiss besteht darin, dass Conda f\u00fcr die Aufl\u00f6sung der Abh\u00e4ngigkeit von Python-Abh\u00e4ngigkeit langsamer als <code>uv<\/code>  sein kann und m\u00f6glicherweise nicht so einfach universelle plattform\u00fcbergreifende Lockfiles erzeugt.<\/p>\n<h4>Grundlegender Conda-Workflow<\/h4>\n<pre><code class=\"language-bash\"># Create environment\nconda create -n my-sim python=3.11\nconda activate my-sim\n\n# Install packages, including non-Python dependencies\nconda install numpy scipy hdf5 openmpi\n\n# Export to environment file\nconda env export --no-builds | grep -v \"prefix:\" &gt; environment.yml\n\n# Restore the environment\nconda env create -f environment.yml\n<\/code><\/pre>\n<h3>PIP-Tools: Die minimalistische Option<\/h3>\n<p><code>pip-tools<\/code> \u00dcberbr\u00fcckt herk\u00f6mmliche PIP-Workflows und Lockfiles. Es ist leicht und bleibt in der N\u00e4he der PIP-Oberfl\u00e4che.<\/p>\n<p>Verwenden Sie PIP-Tools, wenn:<\/p>\n<ul>\n<li>Sie wollen einen einfachen Ansatz.<\/li>\n<li>Sie migrieren von PIP und m\u00f6chten kein gr\u00f6\u00dferes Tool lernen.<\/li>\n<li>Ihr Projekt ist klein und ben\u00f6tigt keine fortgeschrittenen Abh\u00e4ngigkeitsgruppen.<\/li>\n<\/ul>\n<p>Der Kompromiss besteht darin, dass PIP-Tools plattformspezifische Ausgabedateien generieren k\u00f6nnen. Es ist auch weniger umfassend als Poesie oder <code>uv<\/code> .<\/p>\n<h2>PEP 751: Die Zukunft der Lockfiles<\/h2>\n<p>PEP 751 schl\u00e4gt ein standardisiertes Dateiformat f\u00fcr die Aufzeichnung von Python-Abh\u00e4ngigkeiten vor, damit Umgebungen reproduzierbar installiert werden k\u00f6nnen. Dieses Format hei\u00dft <code>pylock.toml<\/code>.<\/p>\n<h3>Was es l\u00f6st<\/h3>\n<p>Python-Abh\u00e4ngigkeitswerkzeuge haben in der Vergangenheit verschiedene Lockfile-Formate verwendet. PDM, PIP Freeze, PIP-Tools, Poesie und <code>uv<\/code> Alle n\u00e4heren sich die Umgebungs- sperrung.<\/p>\n<p>Dies f\u00fchrt zu mehreren Problemen:<\/p>\n<ul>\n<li>Verk\u00e4ufersperre. Es kann schwierig sein, zwischen Werkzeugen zu wechseln.<\/li>\n<li>Werkzeugfragmentierung. Sicherheitsscanner und Automatisierungstools unterst\u00fctzen m\u00f6glicherweise nur einige Formate.<\/li>\n<li>Pr\u00fcfungsschwierigkeiten. Unterschiedliche Formate haben unterschiedliche Syntax und Konventionen.<\/li>\n<\/ul>\n<p>PEP 751 schl\u00e4gt <code>pylock.toml<\/code> als standardisiertes Format vor.<\/p>\n<h3>Warum es f\u00fcr wissenschaftliche Python wichtig ist<\/h3>\n<p>Das vorgeschlagene Format ist f\u00fcr die Forschung n\u00fctzlich, da es:<\/p>\n<ul>\n<li>Von Menschen lesbar, mit toml.<\/li>\n<li>Maschinengeneriert, damit Werkzeuge konsistente Ausgabe schreiben k\u00f6nnen.<\/li>\n<li>Verbrauchsmaterial durch Nicht-Python-Tools.<\/li>\n<li>Sicher durch Design, mit kryptografischen Hashes f\u00fcr den Schutz der Lieferkette.<\/li>\n<li>Flexibel genug, um mehrere Umgebungen oder Abh\u00e4ngigkeitsgruppen darzustellen.<\/li>\n<\/ul>\n<p>Sobald <code>pylock.toml<\/code>  weit verbreitet ist, kann der Bedarf an werkzeugspezifischen Lockfile-Formaten verringert werden. F\u00fcr Forscher bedeutet dies eine bessere Interoperabilit\u00e4t. Ein Lockfile k\u00f6nnte von jedem konformen Tool verbraucht und einfacher von externen Diensten auditiert werden.<\/p>\n<h2>Das Reproduzierbarkeitsspektrum<\/h2>\n<p>Reproduzierbarkeit ist ein Spektrum. Das richtige Niveau ist abh\u00e4ngig von Risiko, Projektdauer und Ver\u00f6ffentlichungsanforderungen.<\/p>\n<table class=\"custom-table\">\n<tbody><tr>\n<th>Ebene<\/th>\n<th>Sich n\u00e4hern<\/th>\n<th>Kosten<\/th>\n<th>Reproduzierbarkeit<\/th>\n<th>am besten f\u00fcr<\/th>\n<\/tr>\n<tr>\n<td>Gut<\/td>\n<td>Dokumentabh\u00e4ngigkeiten in Readme<\/td>\n<td>Minimal<\/td>\n<td>Manuelle \u00dcberpr\u00fcfung<\/td>\n<td>Schnelle Skripte und Tutorials<\/td>\n<\/tr>\n<tr>\n<td>Besser<\/td>\n<td>Umgebungsdatei wie <code>requirements.txt<\/code> oder <code>environment.yml<\/code><\/td>\n<td>Niedrig<\/td>\n<td>Automatisierte Installation<\/td>\n<td>Gemeinsame Projekte und Mitarbeiter<\/td>\n<\/tr>\n<tr>\n<td>Beste<\/td>\n<td>Lockfile Plus versionsgesteuerte Umgebung<\/td>\n<td>M\u00e4\u00dfig<\/td>\n<td>Exakte Reproduktion<\/td>\n<td>Publikationen und Langzeitarchive<\/td>\n<\/tr>\n<tr>\n<td>Maximal<\/td>\n<td>Containerisierung mit Docker oder Singularit\u00e4t<\/td>\n<td>Hoch<\/td>\n<td>Starke Isolation<\/td>\n<td>HPC und ver\u00f6ffentlichte Workflows<\/td>\n<\/tr>\n<\/tbody><\/table>\n<p>F\u00fcr Forschungsprojekte gilt es, die exakten Versionen in <code>requirements.txt<\/code> oder <code>environment.yml<\/code> anzuheften. Der empfohlene Ansatz ist die Verwendung von <code>uv lock<\/code>  oder Conda-Export, um eine reproduzierbare Umgebungsdatei zu erstellen. Die beste Vorgehensweise besteht darin, diese Datei in git zu verfolgen und zu dokumentieren, wie die Umgebung in der Readme neu erstellt wird.<\/p>\n<h2>Praktische Workflows f\u00fcr wissenschaftliche Projekte<\/h2>\n<h3>Workflow 1: Neues Simulationsprojekt mit UV<\/h3>\n<pre><code class=\"language-bash\"># Initialize project\nuv init my-simulation --python 3.11\ncd my-simulation\n\n# Add core dependencies\nuv add numpy scipy matplotlib\n\n# Add scientific libraries\nuv add fipy mpmath\n\n# Generate lockfile\nuv lock\n\n# Add dev dependencies\nuv add --group dev pytest black ruff\n\n# Commit everything\ngit add pyproject.toml uv.lock\ngit commit -m \"Initial project structure with pinned dependencies\"\n<\/code><\/pre>\n<p>Dies funktioniert, weil die Datei <code>uv.lock<\/code> an git festgeschrieben ist. Jeder, der das Repository klont und <code>uv sync<\/code> ausf\u00fchrt, erh\u00e4lt die gleichen aufgel\u00f6sten Versionen.<\/p>\n<h3>Workflow 2: HPC-Projekt mit Conda und Singularit\u00e4t<\/h3>\n<pre><code class=\"language-bash\"># On your workstation\nconda create -n hpc-sim python=3.11\nconda activate hpc-sim\nconda install numpy scipy hdf5 openmpi\n\n# Export environment\nconda env export --no-builds | grep -v \"prefix:\" &gt; environment.yml\n\n# Build Singularity image from Docker\ndocker build -t my-sim:latest .\nsingularity build my-sim.sif docker:\/\/my-sim:latest\n\n# Transfer to HPC cluster\nscp my-sim.sif hpc-cluster:\/scratch\/\n<\/code><\/pre>\n<p>Dies funktioniert, weil Conda Abh\u00e4ngigkeiten von der Workstation verwaltet, w\u00e4hrend Singularity HPC-kompatible Containerisierung bereitstellt. Die Datei <code>environment.yml<\/code> kann versionsgesteuert und auf einem anderen System neu erstellt werden.<\/p>\n<h3>Workflow 3: Migration von PIP zu UV<\/h3>\n<pre><code class=\"language-bash\"># Start with existing requirements.txt\npip install uv\n\n# Replace pip with uv for installs\nuv pip install -r requirements.txt\n\n# Generate a uv lockfile\nuv lock\n\n# From now on, use uv sync instead of pip install\nuv sync\n<\/code><\/pre>\n<p>Dieser Migrationspfad ist einfach, da <code>uv<\/code> mit vielen PIP-Workflows kompatibel ist. Die <code>uv.lock<\/code>-Datei wird zur einzigen Wahrheitsquelle f\u00fcr die Umgebung.<\/p>\n<h2>h\u00e4ufige Fehler und wie man sie vermeidet<\/h2>\n<h3>Fehler 1: Verwenden nicht angehefteter Abh\u00e4ngigkeiten<\/h3>\n<pre><code class=\"language-python\"># WRONG: Allows automatic updates\nnumpy&gt;=1.0\nscipy&gt;=1.0\n\n# RIGHT: Pin exact versions\nnumpy==1.26.4\nscipy==1.11.4\n<\/code><\/pre>\n<p>Kleinere Versions\u00e4nderungen k\u00f6nnen numerisches Verhalten, Konvergenzkriterien oder Gleitkomma-Pr\u00e4zision ver\u00e4ndern. Pin exakte Versionen, wenn die Reproduzierbarkeit wichtig ist.<\/p>\n<h3>Fehler 2: Kein Lockfile festlegen<\/h3>\n<p>Wenn Ihr Repository <code>pyproject.toml<\/code> aber kein Lockfile enth\u00e4lt, ist Ihr Projekt nicht vollst\u00e4ndig reproduzierbar. Ein Lockfile ist die Mindestanforderung f\u00fcr deterministische Builds.<\/p>\n<p>Generieren Sie ein Lockfile und begehen Sie es:<\/p>\n<pre><code class=\"language-bash\">uv lock  # or conda export\ngit add uv.lock  # or environment.yml\ngit commit -m \"Add lockfile for reproducible environment\"\n<\/code><\/pre>\n<h3>Fehler 3: Sub-Abh\u00e4ngigkeiten ignorieren<\/h3>\n<p>Selbst wenn Sie Pakete der obersten Ebene anheften, k\u00f6nnen Unterabh\u00e4ngigkeiten das Verhalten \u00e4ndern.<\/p>\n<pre><code class=\"language-python\"># If you pin fipy but not its dependencies:\n# numpy, mpmath, and other packages may upgrade independently\n<\/code><\/pre>\n<p>Verwenden Sie ein Tool, das den vollst\u00e4ndigen Abh\u00e4ngigkeitsbaum aufl\u00f6st und anheftet, z. B. <code>uv<\/code>, Conda oder Poesie.<\/p>\n<h3>Fehler 4: Plattformspezifische Umgebungen<\/h3>\n<p>Einige Tools k\u00f6nnen plattformspezifische Ausgaben generieren. Wenn Sie unter macOS entwickeln, aber unter Linux bereitstellen, k\u00f6nnen Umgebungsdateien fehlschlagen oder unterschiedlich aufl\u00f6sen.<\/p>\n<p>Verwenden Sie Tools, die plattform\u00fcbergreifende Lockfiles unterst\u00fctzen, oder generieren Sie Lockfiles auf der Zielplattform.<\/p>\n<h3>Fehler 5: Externe Datenabh\u00e4ngigkeiten<\/h3>\n<p>Wenn eine Simulation von externen APIs oder Datenbanken abh\u00e4ngt, die sich \u00e4ndern, kann die Reproduzierbarkeit bei gesperrter Python-Umgebung brechen.<\/p>\n<p>Snapshot externe Daten, wenn m\u00f6glich. Wenn dies nicht m\u00f6glich ist, verwenden Sie versionierte API-Endpunkte und dokumentieren Sie die genaue Version oder das Zugriffsdatum.<\/p>\n<h2>Was wir empfehlen: ein Entscheidungsrahmen<\/h2>\n<p>Verwenden Sie dieses Entscheidungsframework bei der Auswahl eines Abh\u00e4ngigkeitsmanagement-Tools f\u00fcr ein wissenschaftliches Python-Projekt.<\/p>\n<ol>\n<li>\n<p>Ben\u00f6tigen Sie Nicht-Python-Abh\u00e4ngigkeiten wie C, C++, MPI, CUDA, HDF5 oder FFTW?<\/p>\n<ul>\n<li>Ja: Verwenden Sie Conda oder Conda in Docker oder Singularity.<\/li>\n<li>Nein: Weiter zur n\u00e4chsten Frage.<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>Ver\u00f6ffentlichen Sie ein Python-Paket f\u00fcr Pypi?<\/p>\n<ul>\n<li>Ja: Betrachten Sie Poesie f\u00fcr ausgereifte Ver\u00f6ffentlichungsworkflows oder <code>uv<\/code> f\u00fcr Geschwindigkeit.<\/li>\n<li>Nein: Weiter zur n\u00e4chsten Frage.<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>Arbeiten Sie in CI \/ CD-Pipelines?<\/p>\n<ul>\n<li>Ja: Verwenden Sie <code>uv<\/code>, da schnellere Installationen die CI-Zeit verk\u00fcrzen k\u00f6nnen.<\/li>\n<li>Nein: Entweder <code>uv<\/code>, Conda oder Poesie k\u00f6nnen je nach Projekt funktionieren.<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>Wie wichtig ist die plattform\u00fcbergreifende Kompatibilit\u00e4t?<\/p>\n<ul>\n<li>Hoch: Verwenden Sie <code>uv<\/code> , wo ein universelles Lockfile Ihren Anforderungen entspricht.<\/li>\n<li>Moderat: Conda kann gut funktionieren, insbesondere auf Unix-\u00e4hnlichen Forschungssystemen.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p>F\u00fcr die meisten neuen Forschungsprojekte ist <code>uv<\/code> eine starke Standardeinstellung, wenn Sie Geschwindigkeit und Reproduzierbarkeit ben\u00f6tigen. Kombinieren Sie f\u00fcr HPC-Projekte oder Workflows mit Nicht-Python-Abh\u00e4ngigkeiten Conda mit Containerisierung.<\/p>\n<h2>Zusammenfassung<\/h2>\n<p>Das Verwalten von Abh\u00e4ngigkeiten in wissenschaftlichem Python ist nicht optional. Es ist eine Grundlage reproduzierbarer Forschung.<\/p>\n<p>Die wichtigsten Punkte sind:<\/p>\n<ol>\n<li>Lockfiles sind unerl\u00e4sslich. Pin genaue Versionen und verfolgen Sie sie in git.<\/li>\n<li><code>uv<\/code> ist eine starke moderne Option f\u00fcr schnelle, reproduzierbare Umgebungen.<\/li>\n<li>Conda bleibt f\u00fcr wissenschaftliche Stacks mit Nicht-Python-Abh\u00e4ngigkeiten von entscheidender Bedeutung.<\/li>\n<li>PEP 751 zielt darauf ab, Lockfile-Formate durch <code>pylock.toml<\/code> zu vereinheitlichen.<\/li>\n<li>Eine Readme mit \u00fcbersichtlichen Installationsanweisungen ist die Mindestdokumentation, die jedes Projekt ben\u00f6tigt.<\/li>\n<\/ol>\n<p>Beginnen Sie mit der Pr\u00fcfung aktueller Projekte. \u00dcberpr\u00fcfen Sie, ob Umgebungen dokumentiert und Abh\u00e4ngigkeiten angeheftet sind. Konvertieren Sie ein Projekt, um ein Lockfile zu verwenden. Die Vorabkosten zahlen sich aus, wenn Sie oder ein anderer Forscher die Simulation Monate oder Jahre sp\u00e4ter mit Zuversicht erneut ausf\u00fchren m\u00fcssen.<\/p>\n<h2>Verwandte Anleitungen<\/h2>\n<ul>\n<li><a href=\"https:\/\/matforge.org\/reproducible-research-workflows-docker-and-conda-for-simulation-projects\/\"> Reproduzierbare Forschungsworkflows: Docker und Conda f\u00fcr Simulationsprojekte <\/a> - Erfahren Sie, wie sich Docker und Conda f\u00fcr die Reproduzierbarkeit der Simulation erg\u00e4nzen.<\/li>\n<li><a href=\"https:\/\/matforge.org\/unit-testing-scientific-code-pytest-strategies-research-projects\/\">Einheitentest f\u00fcr wissenschaftlichen Code: PYTest-Strategien f\u00fcr Forschungsprojekte<\/a> \u2014 CI-Muster f\u00fcr reproduzierbare Simulation Pipelines.<\/li>\n<li><a href=\"https:\/\/matforge.org\/gpu-acceleration-for-fipy-simulations-cupy-and-numba-integration-guide\/\">GPU-Beschleunigung f\u00fcr FIPY-Simulationen: Cupy- und Numba-Integrationshandbuch<\/a> \u2014 GPU verwalten Abh\u00e4ngigkeiten mit Pypi und Conda.<\/li>\n<li><a href=\"https:\/\/matforge.org\/working-through-your-first-fipy-example\/\"> Durcharbeiten Ihres ersten FIPY-Beispiels<\/a> - Beginnen Sie mit einem von Abh\u00e4ngigkeiten verwalteten FIPY-Projekt.<\/li>\n<\/ul>\n<h2>Referenzen und Weiterlesen<\/h2>\n<ul>\n<li><a href=\"https:\/\/docs.astral.sh\/uv\/\">UV-Dokumentation<\/a> - Offizielle Anleitung f\u00fcr den rostbasierten Paketmanager.<\/li>\n<li><a href=\"https:\/\/peps.python.org\/pep-0751\/\">Pep 751: pylock.toml-Spezifikation <\/a> - Standardisiertes Lockfile-Format.<\/li>\n<li><a href=\"https:\/\/book.the-turing-way.org\/reproducible-research\/overview\/overview-definitions\/\"> Der Turing-Weg: Reproduzierbare Forschungsdefinitionen <\/a> - Gemeinschaftsstandards f\u00fcr reproduzierbare Workflows.<\/li>\n<li><a href=\"https:\/\/lincolnloop.github.io\/python-package-manager-shootout\/\">Shootout in Python-Paketmanager<\/a> \u2014 Benchmarks zum Vergleich von UV, Poesie, PIP-Tools, PDM und Pixi.<\/li>\n<li><a href=\"https:\/\/wagtail.org\/blog\/uv-overtakes-poetry\/\">Wagtail: UV-\u00fcberholt Poesie <\/a> - Akzeptanzsignal f\u00fcr die Industrie.<\/li>\n<\/ul>\n"},"excerpt":{"rendered":"<p><span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\"> 8<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span>Das Management von Abh\u00e4ngigkeiten in wissenschaftlicher Python ist einer der wichtigsten Teile der reproduzierbaren Forschung. Eine Simulation kann Monate sp\u00e4ter fehlschlagen, da die Paketversionen ge\u00e4ndert, ein Python-Interpreter verschoben oder eine numerische Bibliothek in einer Weise aktualisiert wurde, die sich auf die Ergebnisse auswirkt. In diesem Leitfaden erfahren Sie, wie Lockfiles, Umgebungen und moderne Paketmanager Forschern [&hellip;]<\/p>\n","protected":false,"raw":""},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_locale":"de_DE","_original_post":"https:\/\/matforge.org\/?p=391","iawp_total_views":0,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-857","post","type-post","status-publish","format-standard","hentry","category-simulation-modeling-projects","de-DE"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Abh\u00e4ngigkeiten im wissenschaftlichen Python verwalten<\/title>\n<meta name=\"description\" content=\"Erfahren Sie, wie Sie wissenschaftliche Python-Abh\u00e4ngigkeiten mit Lockfiles, UV, Conda, Poesie, Umgebungen und reproduzierbaren Workflows verwalten.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/matforge.org\/de\/managing-dependencies-scientific-python-lockfiles-environments\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Abh\u00e4ngigkeiten im wissenschaftlichen Python verwalten\" \/>\n<meta property=\"og:description\" content=\"Erfahren Sie, wie Sie wissenschaftliche Python-Abh\u00e4ngigkeiten mit Lockfiles, UV, Conda, Poesie, Umgebungen und reproduzierbaren Workflows verwalten.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/matforge.org\/de\/managing-dependencies-scientific-python-lockfiles-environments\/\" \/>\n<meta property=\"og:site_name\" content=\"matforge.org\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-30T12:22:23+00:00\" \/>\n<meta name=\"author\" content=\"Elena Markovska\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Elena Markovska\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"12\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/managing-dependencies-scientific-python-lockfiles-environments\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/managing-dependencies-scientific-python-lockfiles-environments\\\/\"},\"author\":{\"name\":\"Elena Markovska\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/980162bb5de46742daece973661d93da\"},\"headline\":\"Abh\u00e4ngigkeiten in wissenschaftlichen Python verwalten: Lockfiles, Umgebungen und Reproduzierbarkeit\",\"datePublished\":\"2026-07-30T12:22:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/managing-dependencies-scientific-python-lockfiles-environments\\\/\"},\"wordCount\":2105,\"commentCount\":0,\"articleSection\":[\"Simulation & amp; Modellierungsprojekte\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/matforge.org\\\/de\\\/managing-dependencies-scientific-python-lockfiles-environments\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/managing-dependencies-scientific-python-lockfiles-environments\\\/\",\"url\":\"https:\\\/\\\/matforge.org\\\/de\\\/managing-dependencies-scientific-python-lockfiles-environments\\\/\",\"name\":\"Abh\u00e4ngigkeiten im wissenschaftlichen Python verwalten\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#website\"},\"datePublished\":\"2026-07-30T12:22:23+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/980162bb5de46742daece973661d93da\"},\"description\":\"Erfahren Sie, wie Sie wissenschaftliche Python-Abh\u00e4ngigkeiten mit Lockfiles, UV, Conda, Poesie, Umgebungen und reproduzierbaren Workflows verwalten.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/managing-dependencies-scientific-python-lockfiles-environments\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/matforge.org\\\/de\\\/managing-dependencies-scientific-python-lockfiles-environments\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/managing-dependencies-scientific-python-lockfiles-environments\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/matforge.org\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Abh\u00e4ngigkeiten in wissenschaftlichen Python verwalten: Lockfiles, Umgebungen und Reproduzierbarkeit\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#website\",\"url\":\"https:\\\/\\\/matforge.org\\\/\",\"name\":\"matforge.org\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/matforge.org\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/980162bb5de46742daece973661d93da\",\"name\":\"Elena Markovska\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2de4e35b6581d7d8a839335156c6b5834cfaa0aef537a1c837e882dc57eea1e7?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2de4e35b6581d7d8a839335156c6b5834cfaa0aef537a1c837e882dc57eea1e7?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2de4e35b6581d7d8a839335156c6b5834cfaa0aef537a1c837e882dc57eea1e7?s=96&d=mm&r=g\",\"caption\":\"Elena Markovska\"},\"sameAs\":[\"http:\\\/\\\/matforge.org\"],\"url\":\"https:\\\/\\\/matforge.org\\\/author\\\/elena-markovska\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Abh\u00e4ngigkeiten im wissenschaftlichen Python verwalten","description":"Erfahren Sie, wie Sie wissenschaftliche Python-Abh\u00e4ngigkeiten mit Lockfiles, UV, Conda, Poesie, Umgebungen und reproduzierbaren Workflows verwalten.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/matforge.org\/de\/managing-dependencies-scientific-python-lockfiles-environments\/","og_locale":"de_DE","og_type":"article","og_title":"Abh\u00e4ngigkeiten im wissenschaftlichen Python verwalten","og_description":"Erfahren Sie, wie Sie wissenschaftliche Python-Abh\u00e4ngigkeiten mit Lockfiles, UV, Conda, Poesie, Umgebungen und reproduzierbaren Workflows verwalten.","og_url":"https:\/\/matforge.org\/de\/managing-dependencies-scientific-python-lockfiles-environments\/","og_site_name":"matforge.org","article_published_time":"2026-07-30T12:22:23+00:00","author":"Elena Markovska","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Elena Markovska","Gesch\u00e4tzte Lesezeit":"12\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/matforge.org\/de\/managing-dependencies-scientific-python-lockfiles-environments\/#article","isPartOf":{"@id":"https:\/\/matforge.org\/de\/managing-dependencies-scientific-python-lockfiles-environments\/"},"author":{"name":"Elena Markovska","@id":"https:\/\/matforge.org\/#\/schema\/person\/980162bb5de46742daece973661d93da"},"headline":"Abh\u00e4ngigkeiten in wissenschaftlichen Python verwalten: Lockfiles, Umgebungen und Reproduzierbarkeit","datePublished":"2026-07-30T12:22:23+00:00","mainEntityOfPage":{"@id":"https:\/\/matforge.org\/de\/managing-dependencies-scientific-python-lockfiles-environments\/"},"wordCount":2105,"commentCount":0,"articleSection":["Simulation & amp; Modellierungsprojekte"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/matforge.org\/de\/managing-dependencies-scientific-python-lockfiles-environments\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/matforge.org\/de\/managing-dependencies-scientific-python-lockfiles-environments\/","url":"https:\/\/matforge.org\/de\/managing-dependencies-scientific-python-lockfiles-environments\/","name":"Abh\u00e4ngigkeiten im wissenschaftlichen Python verwalten","isPartOf":{"@id":"https:\/\/matforge.org\/#website"},"datePublished":"2026-07-30T12:22:23+00:00","author":{"@id":"https:\/\/matforge.org\/#\/schema\/person\/980162bb5de46742daece973661d93da"},"description":"Erfahren Sie, wie Sie wissenschaftliche Python-Abh\u00e4ngigkeiten mit Lockfiles, UV, Conda, Poesie, Umgebungen und reproduzierbaren Workflows verwalten.","breadcrumb":{"@id":"https:\/\/matforge.org\/de\/managing-dependencies-scientific-python-lockfiles-environments\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/matforge.org\/de\/managing-dependencies-scientific-python-lockfiles-environments\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/matforge.org\/de\/managing-dependencies-scientific-python-lockfiles-environments\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/matforge.org\/de\/"},{"@type":"ListItem","position":2,"name":"Abh\u00e4ngigkeiten in wissenschaftlichen Python verwalten: Lockfiles, Umgebungen und Reproduzierbarkeit"}]},{"@type":"WebSite","@id":"https:\/\/matforge.org\/#website","url":"https:\/\/matforge.org\/","name":"matforge.org","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/matforge.org\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Person","@id":"https:\/\/matforge.org\/#\/schema\/person\/980162bb5de46742daece973661d93da","name":"Elena Markovska","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/2de4e35b6581d7d8a839335156c6b5834cfaa0aef537a1c837e882dc57eea1e7?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/2de4e35b6581d7d8a839335156c6b5834cfaa0aef537a1c837e882dc57eea1e7?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2de4e35b6581d7d8a839335156c6b5834cfaa0aef537a1c837e882dc57eea1e7?s=96&d=mm&r=g","caption":"Elena Markovska"},"sameAs":["http:\/\/matforge.org"],"url":"https:\/\/matforge.org\/author\/elena-markovska\/"}]}},"_links":{"self":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/857","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/comments?post=857"}],"version-history":[{"count":1,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/857\/revisions"}],"predecessor-version":[{"id":951,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/857\/revisions\/951"}],"wp:attachment":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/media?parent=857"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/categories?post=857"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/tags?post=857"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}