2. Abhängigkeitsspezifikation
Um Abhängigkeiten für Ihr Projekt zu installieren, müssen Sie zumindest nicht mehr PIP oder Conda verwenden. Stattdessen beginnen Sie mit der Verwendung poetry add library_name
Befehle.
Hier ist ein Beispiel:
$ poetry add scikit-learn@newest
Hinzufügen der @newest
flag installiert die neueste Model von Sklearn von PyPI. Es ist auch möglich, mehrere Abhängigkeiten ohne Flags (Einschränkungen) hinzuzufügen:
$ poetry add requests pandas numpy plotly seaborn
Die Schönheit von add
Wenn für die angegebenen Pakete keine Versionseinschränkungen gelten, werden die Versionen aller Pakete gefunden, die aufgelöst werden können, d. h. es werden keine Fehler ausgegeben, wenn sie zusammen installiert werden. Außerdem wird eine Prüfung anhand der bereits im angegebenen Abhängigkeiten durchgeführt pyproject.toml
.
$ cat pyproject.toml
[tool.poetry]
...[tool.poetry.dependencies]
python = "^3.9"
numpy = "^1.25.0"
scikit-learn = "^1.2.2"
requests = "^2.31.0"
pandas = "^2.0.2"
plotly = "^5.15.0"
seaborn = "^0.12.2"
Versuchen wir es mit einem Downgrade numpy
auf v1.24 und sehen Sie, was passiert:
$ poetry add numpy==1.24...
As a result of seaborn (0.12.2) is dependent upon numpy (>=1.17,<1.24.0 || >1.24.0) ...
model fixing failed.
Poetry lässt dies nicht zu, da die heruntergestufte Model mit Seaborn in Konflikt geraten würde. Wenn es sich um PIP oder Conda handelte, würden sie gerne Numpy 1.24 installieren und uns angrinsen, wenn der Albtraum beginnt.
Zusätzlich zu Standardinstallationen bietet Poetry eine vielseitige Syntax zum Definieren von Versionseinschränkungen. Mit dieser Syntax können Sie genaue Versionen angeben, Grenzen für Versionsbereiche festlegen (größer als, kleiner als oder dazwischen) und Haupt-, Neben- oder Patchversionen festlegen. Als Beispiele dienen die folgenden Tabellen, die der Poetry-Dokumentation (MIT-Lizenz) entnommen sind.
Caret-Anforderungen:
Tilde-Anforderungen:
Platzhalteranforderungen:
Weitere erweiterte Einschränkungsspezifikationen finden Sie unter diese Seite der Poetry-Dokumente.