Installation
dsstools
(und damit auch networkx
und matplotlib
) sollten mit einem Mittel
der Wahl in die jeweilige Umgebung installiert werden. Wir nutzen bei uns
poetry
, dessen Installation hier erklärt
wird.
dsstools
Erstelle einen Ordner, gerne auch inklusive Git. Führe im Terminal darin folgendes aus:
Danach sollte sich eine pyproject.toml
im Verzeichnis befinden. Öffne diese .toml mit einem Editor deiner Wahl und füge Folgendes ein:
[[tool.poetry.source]]
name = "dss"
url = "https://gitlab.rrz.uni-hamburg.de/api/v4/projects/2655/packages/pypi/simple"
priority = "supplemental"
Damit wird Poetry das zweite Repository, in dem wir dsstools
momentan veröffentlichen, definiert. Sollte es Packages auf PyPi nicht finden können, so sucht es sich das Zweite.
Um dsstools
schlussendlich zu installieren, führe Folgendes aus:
Achtung
Bevor du den folgenden Befehl ausführst, bitte unbedingt den Abschnitt weiter unten lesen.
Um das Paket zu aktualisieren, bspw. wenn ein neues Update erschienen ist:
Hinweis
Wer möchte und sich auskennt, kann auch alternativ ein virtuelles
Environment venv
oder einfach pip
nutzen.
Verwendung
Wenn man jetzt ein Skript schreibt, beispielsweise mit dem Namen main.py
, so lässt sich das wie folgt im Terminal ausführen:
Hinweis
Wer eine IDE wie PyCharm oder Spyder nutzt, findet für die Einrichtung in der IDE hier folgende Links: - PyCharm - Spyder unterstützt das Feature bisher noch nicht. Es ist aber für die Veröffentlichung von Spyder 6.0 geplant. Issue hier
graphviz
Die Installation von graphviz
gestaltet sich etwas schwieriger und ist abhängig von deinem Betriebssystem. Graphviz ist dabei ein Programm zur Visualisierung von Graphen aller Art, während pygraphviz
ein Python-Package ist, welches dem Zugriff auf Graphviz aus Python heraus ermöglicht. pygraphviz
kann dementsprechend aus Poetry/venv heraus installiert werden, Graphviz muss auf Betriebssystemebene installiert werden.
Die Installationsanleitung für pygraphviz
(das ist das zugehörige Python-Package) ist sehr hilfreich: https://pygraphviz.github.io/documentation/stable/install.html
Einige Vorschläge, wie graphviz
installiert werden kann:
Windows
- Chocolatey:
PS C:\> choco install graphviz PS C:\> python -m pip install --config-settings="--global-option=build_ext" ` --config-settings="--global-option="-IC:\Program Files\Graphviz\include" ` --config-settings="--global-option="-LC:\Program Files\Graphviz\lib" ` pygraphviz
pygraphviz
muss danach mit der Referenz zu Graphviz installiert werden.
Achtung
In diesem Fall darf pygraphviz
nicht über Poetry installiert werden!
- Manuell: Die Vorgehensweise ist hier ausführlich beschrieben.
macOS
Siehe auch hier die Installationsanweisungen von pygraphviz
.
- Homebrew:
Hinweis
In diesem Fall kann Poetry für die Installation von pygraphviz
verwendet werden:
- MacPorts
Warnung
In diesem Fall kann Poetry nicht für die Installation von pygraphviz
verwendet werden.
Deshalb muss pygraphviz
manuell installiert werden:
Linux
Du kommst klar. Nutze den Package-Manager deines Vertrauens für die Installation.
Hinweis
Graphviz besteht häufig aus zwei Pakete, bspw. für Ubuntu aus graphviz
und
graphviz-dev
. Bitte prüfe das für deine Package Management vorab.
Danach kann die Standardinstallation über Poetry genutzt werden.
Nix (nur für Expert*innen)
Dem Repo liegt eine Nix Flake bei, die eine Entwicklungsumgebung bereitstellt und automatisch Graphviz installiert:
{
description = "Dsstools flake for environment handling";
inputs = {
systems.url = "github:nix-systems/default";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
devenv.url = "github:cachix/devenv";
};
outputs = { self, nixpkgs, devenv, systems }@inputs:
let
forEachSystem = nixpkgs.lib.genAttrs (import systems);
in
{
packages = forEachSystem (system: {
devenv-up = self.devShells.${system}.default.config.procfileScript;
});
devShells = forEachSystem (system:
let
pkgs = nixpkgs.legacyPackages.${system};
in
{
default = devenv.lib.mkShell {
inherit inputs pkgs;
modules = [
{
packages = [
pkgs.graphviz
pkgs.python312Packages.pygraphviz
pkgs.gcc
];
languages.python = {
enable = true;
package = pkgs.python312;
poetry = {
activate.enable = true;
enable = true;
install.enable = true;
install.allExtras = true;
install.groups = [ "dev" ];
};
};
}
];
};
python311 = devenv.lib.mkShell {
inherit inputs pkgs;
modules = [
{
packages = [
pkgs.graphviz
pkgs.gcc
];
languages.python = {
enable = true;
package = pkgs.python311;
poetry = {
activate.enable = true;
enable = true;
install.enable = true;
install.allExtras = true;
install.groups = [ "dev" ];
};
};
}
];
};
python310 = devenv.lib.mkShell {
inherit inputs pkgs;
modules = [
{
packages = [
pkgs.graphviz
pkgs.gcc
];
languages.python = {
enable = true;
package = pkgs.python310;
poetry = {
activate.enable = true;
enable = true;
install.enable = true;
install.allExtras = true;
install.groups = [ "dev" ];
};
};
}
];
};
python39 = devenv.lib.mkShell {
inherit inputs pkgs;
modules = [
{
packages = [
pkgs.graphviz
# pkgs.python39Packages.pygraphviz
pkgs.gcc
];
languages.python = {
enable = true;
package = pkgs.python39;
poetry = {
activate.enable = true;
enable = true;
install.enable = true;
install.allExtras = true;
install.groups = [ "dev" ];
};
};
}
];
};
});
};
}