ubuntuusers.de

Altes Python-Programm unter Ubuntu 20.10 zum Laufen bringen

Status: Gelöst | Ubuntu-Version: Ubuntu GNOME 20.10 (Groovy Gorilla)
Antworten |

Hagen20

Avatar von Hagen20

Anmeldungsdatum:
31. März 2011

Beiträge: 524

Hallo liebe Forumnutzer,

vielleicht kann mir jemand von Euch helfen. Ich nutze seit Jahren das Programm pondus - ein Gewichtstracker, der csv-Dateien und Grafiken erzeugen kann. Bis vor einigen Jahren war es in den offiziellen Paketquellen. Ich habe jetzt versucht, die Version pondus_0.8.0-4.all.deb zu installieren und erhalte folgende Fehlermeldung:

Fehler:Abhängigkeit nicht erfüllbar:python:any(>=2.6.6-7~)

Ich habe schon versucht über aptitude diese Version zu installieren, aber scheitere jedesmal an defekten Paketen und nicht erfüllbaren Abhängigkeiten. Unter Ubuntu 20.04 war es mir noch möglich, die gleiche Version zum Laufen zu bringen, natürlich nur unter der Bedingung eines teilweise korrupten Systems, aber damit konnte ich leben. Gibt es vielleicht eine Kompatibilitätslösung um ein Python2-Programm in einer Python3-Umgebung laufen zu lassen? Für hilfreiche Antworten wäre ich sehr dankbar.

Freundliche Grüße Christian

Axel-Erfurt

Anmeldungsdatum:
18. Mai 2016

Beiträge: 1347

Was muß das Programm denn können? Ich hatte mal eins für Blutdruck gemacht, eine Spalte für Gewicht hat es nicht, wäre aber kein Problem.

Im Anhang ein Screenshot.

Bilder

Hagen20

(Themenstarter)
Avatar von Hagen20

Anmeldungsdatum:
31. März 2011

Beiträge: 524

Das ist ja großartig, Axel! Danke für Deine rasche Antwort. Pondus bietet eine Spalte, in der man unter dem jeweiligen Datum ein ermitteltes Gewicht eintragen kann. Mittels matplotlib konnte man sich für einen definierten Zeitraum eine Kurve der Gewichtsentwicklung ausdrucken, was ich sehr nützlich und anschaulich fand. Man hätte auch Fettanteil, BMI und Notizen etc. eintragen können, aber das fand ich nicht so interessant.

Wenn Du eine Möglichkeit siehst, Deine Anwendung entsprechend umzuschreiben und auszugestalten, wäre das sicherlich für viele ein Gewinn, denn derartiges gibt es für Linux nicht, ich glaube nicht mal für Windows. Lediglich apps für Android und iPhone gibt es in dieser Hinsicht zu Hauf, aber die wollen meistens über in-app etwas verkaufen.

Also: wenn Du Zeit und Möglichkeit hast, nur zu! Ich würde mich wahnsinnig freuen! Gruß, Christian

homer65

Avatar von homer65

Anmeldungsdatum:
8. November 2005

Beiträge: 586

Wohnort: bochum, germany

Hallo Namensvetter,
habe für mich eine Gewichtswebanwendung programmiert.
Vielleicht wäre das auch was für Dich.
Ist allerdings in Java programmiert.
Man braucht dazu eine Postgres Datenbank und einen Tomcat Servletcontainer oder etwas vergleichbares.
Interesse? Mit freundlichen Grüßen Christian

Axel-Erfurt

Anmeldungsdatum:
18. Mai 2016

Beiträge: 1347

Ich habe es auf github gestellt. Screenshot

Ich habe jetzt mal fürs Diagramm eine Spanne von 60 - 100 kg gewählt, falls es zu wenig ist kann ich es ändern.

Die Test-Daten in der Tabelle kannst Du ja löschen.

Bei Änderungen in der Tabelle (Doppelklick) darauf achten das Du fürs Gewicht float benutzt, also immer mit Punkt. (z.B. 84.0)

Oben gibts einen Button "Programmordner öffnen", der öffnet den Ordner im Dateimanager. Dort findest Du u.a. Gewicht.csv und gewicht.png (Diagramm Bild)

Den Starter findest Du unter Büro bzw. Office, mir fiel gerade nichts besseres ein.

Du benötigst dazu PyQt5, falls Du es nicht schon hast,

sudo apt-get install python3-pyqt5 

Für einen ersten Test kannst Du es so installieren.

cd ~/Downloads && wget https://raw.githubusercontent.com/Axel-Erfurt/Gewicht/main/Installer.sh && chmod +x ./Installer.sh && ./Installer.sh 

Das ist der Inhalt der Installer.sh, damit Du siehst was es tut.

#!/bin/sh
cd ~/Downloads
echo "herunterladen ..."
wget https://github.com/Axel-Erfurt/Gewicht/archive/main.zip
echo "entpacken ..."
unzip main.zip
echo "verschiebe nach ~/local/share"
mv Gewicht-main ~/.local/share/Gewicht
echo "kopiere Icon nach .icons"
cp ~/.local/share/Gewicht/waage.png ~/.icons
echo "kopiere Starter nach ~/.local/share/applications"
cp ~/.local/share/Gewicht/Gewicht.desktop ~/.local/share/applications

Hagen20

(Themenstarter)
Avatar von Hagen20

Anmeldungsdatum:
31. März 2011

Beiträge: 524

Vielen Dank Christian und Axel für Eure Antworten. Leider kann ich mit Postgres und Tomcat nichts anfangen, sorry. Aber Dein Programm, lieber Axel, habe ich schon mal getestet. Klasse! Es kommt dem, was ich mir vorstelle schon sehr nah. Wenn ich jetzt noch meine csv aus dem alten pondus importieren könnte, das Fenster des Programms noch etwas weiter aufziehen könnte und wenn Du für das Gewicht den Spielraum noch etwas nach oben setzt (mit 100 kg komme ich leider nicht ganz hin ...), dann wäre es perfekt. Tausend Dank jedenfalls schon jetzt für die Mühe, die Du Dir gemacht hast.

Freundliche Grüße, Christian

Axel-Erfurt

Anmeldungsdatum:
18. Mai 2016

Beiträge: 1347

Wenn Du deine csv aus dem alten pondus mal mit einem Texteditor öffnest könntest Du mal 3 Zeilen davon hier einfügen, dann kann ich sehen wie sie aufgebaut ist.

Hagen20

(Themenstarter)
Avatar von Hagen20

Anmeldungsdatum:
31. März 2011

Beiträge: 524

Gerne hier der Ausschnitt der csv:

2011-04-22,93.2
2011-04-23,92.9
2011-04-24,93.0

Im Anhang findest Du einen Auschnitt einer von Pondus erzeugten Diagramm-png, die ich in eine jpg umgewandelt habe.

Bilder

Doc_Symbiosis

Avatar von Doc_Symbiosis

Anmeldungsdatum:
11. Oktober 2006

Beiträge: 4453

Wohnort: Göttingen

Du könntest auch einfach Gnuplot verwenden, um ein entsprechendes Diagramm zu zeichnen.

Wenn deine Datei z.B. plot.csv heisst, dann erstelle ein Gnuplot-Skript namens example.gnuplot mit folgendem Inhalt:

set datafile separator ',' # Setze das Trennzeichen in der CSV
set xdata time  # Setze die X-Achse als Zeitachse
set timefmt "%Y-%m-%d" # Setze das Format der Datumsangabe
plot 'plot.csv' using 1:2 with lines # Zeichne das Diagramm

Ausführen tust Du es dann so:

gnuplot -p  example.gnuplot

Dabei müsste dann die example.gnuplot und die plot.csv im gleichen Verzeichnis sein.

Axel-Erfurt

Anmeldungsdatum:
18. Mai 2016

Beiträge: 1347

Kopiere mal deine alte csv nach Downloads und nenne sie pondus.csv

Zum Umwandeln führst Du dieses python Script aus

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from datetime import datetime
import locale
import os

g_datei = f"{os.path.expanduser('~')}/.local/share/Gewicht/Gewicht.csv"
p_datei = f"{os.path.expanduser('~')}/Downloads/pondus.csv"

print(g_datei, p_datei)

loc = locale.getlocale()
locale.setlocale(locale.LC_ALL, loc)

liste = []

with open(p_datei, 'r') as f:
    old = f.read().splitlines()
    f.close()

    for lines in old:
        line = lines.split(",")
        datum = datetime.strptime(line[0], "%Y-%m-%d")
        gewicht = line[1]
        d = datum.strftime("%A, %d.%B %Y")
        sqldatum = datum.strftime("%Y%m%d")
        liste.append(f"{d}\t{gewicht}\t\t{sqldatum}")
        
print('\n'.join(liste))
    
with open(g_datei, 'w') as f:
    f.write('\n'.join(liste))

Hagen20

(Themenstarter)
Avatar von Hagen20

Anmeldungsdatum:
31. März 2011

Beiträge: 524

Äußerst instruktiv, Doc_Symbiosis! Vielen Dank, nur die Beschriftung der X-Achse liest sich etwas kryptisch. Zu Axel: ich habe das Skript im Terminal ausgeführt und eine ewig lange Datenausgabe erhalten. Sollte das Skript eine Datei erstellen?

Axel-Erfurt

Anmeldungsdatum:
18. Mai 2016

Beiträge: 1347

Hagen20 schrieb:

ich habe das Skript im Terminal ausgeführt und eine ewig lange Datenausgabe erhalten. Sollte das Skript eine Datei erstellen?

Ja, Deine alten Daten sollten jetzt in der Gewicht.csv sein.

Doc_Symbiosis

Avatar von Doc_Symbiosis

Anmeldungsdatum:
11. Oktober 2006

Beiträge: 4453

Wohnort: Göttingen

Hallo Hagen20,

die Beschriftung der x-Achse kannst Du noch nach belieben anpassen. Z.B. kannst Du nach der Zeile mit dem timefmt noch folgende Zeile einfügen:

set format x "%d.%m.%y"

Müsstest Du nur mal schauen, wie das aussieht, wenn Du noch viel mehr Datenpunkte hast...

Axel-Erfurt

Anmeldungsdatum:
18. Mai 2016

Beiträge: 1347

Ich könnte auch das Diagramm weglassen und gnuplot aufrufen, um den in der Tabelle angezeigten Zeitraum darzustellen.

Ich werde das mal testen.

Axel-Erfurt

Anmeldungsdatum:
18. Mai 2016

Beiträge: 1347

Hallo Doc_Symbiosis,

Der Zeitraum meiner Test CSV ist 1.Januar 2020 bis 31.März 2020

gnuplot beginnt aber am 26.Dezember 2019 und endet am 2.April 2020. (siehe Bild)

Ist das normal?

Edit:

hier noch die preview.gnuplot

TITLE = "Messungen"
set title TITLE offset char 0, char -1
set datafile separator '\t' # Setze das Trennzeichen in der CSV
set xdata time  # Setze die X-Achse als Zeitachse
set timefmt "%Y%m%d" # Setze das Format der Datumsangabe
set format x "%d.%m.%y"
plot "~/.local/share/Gewicht/zeitraum.csv" index 0 u 1:2 w filledcurves below y1=88 lt 2 notitle, "~/.local/share/Gewicht/zeitraum.csv" index 0 u 1:2 w filledcurves above y1=88 lt 7 notitle
Bilder
Antworten |