Installation
dsstools (und damit auch networkx und matplotlib) sollten mit einem Mittel
der Wahl in die jeweilige Umgebung installiert werden.
dsstools
Erstelle einen Ordner, gerne auch inklusive Git. Führe im Terminal darin folgendes aus:
Hinweis
Falls du ein Virtual Environment verwenden willst, wäre das hier der Zeitpunkt.
Optional: Graphviz für die Positionierung
Graphviz, ein externes Tool für die Darstellung von Abbildungen, ermöglicht eine etwas schönere Positionierungen, gerade in eng vernetzten Graphen.
Falls du Graphviz zur Positionierung nutzen möchtest:
Achtung
Bevor du den folgenden Befehl ausführst, bitte unbedingt den Abschnitt weiter unten lesen.
Updates
Um das Package zu aktualisieren, bspw. wenn ein neues Update erschienen ist:
Verwendung
Wenn man jetzt ein Skript schreibt, beispielsweise mit dem Namen main.py, so lässt sich das wie folgt im Terminal ausführen:
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 pip 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" ` pygraphvizpygraphvizmuss danach mit der Referenz zu Graphviz installiert werden.
Achtung
In diesem Fall darf pygraphviz nicht über pip installiert werden!
- Manuell: Die Vorgehensweise ist hier ausführlich beschrieben.
macOS
Siehe auch hier die Installationsanweisungen von pygraphviz.
- Homebrew:
Hinweis
In diesem Fall kann pip für die Installation von pygraphviz verwendet werden:
- MacPorts
Warnung
In diesem Fall kann pip 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 Packages, bspw. für Ubuntu aus graphviz und
graphviz-dev. Bitte prüfe das für deine Package Management vorab.
Danach kann die Standardinstallation über pip 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" ];
};
};
}
];
};
python313 = devenv.lib.mkShell {
inherit inputs pkgs;
modules = [
{
packages = [
pkgs.graphviz
# pkgs.python39Packages.pygraphviz
pkgs.gcc
];
languages.python = {
enable = true;
package = pkgs.python313;
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" ];
};
};
}
];
};
});
templates = rec {
default = {
path = ./templates/pythonScript;
description = "Default setup with dsstools and Graphviz.";
};
};
};
}