Forum: PC-Programmierung Python-Programm wegsichern für die Ewigkeit


von Walter T. (nicolas)


Lesenswert?

Hallo zusammen,

ich bin ich Python relativ neu und durch einen anderen Thread 
(Beitrag "Julia, verwendet das hier jemand?") hat sich mir 
eine Frage aufgedrängt: Wie kann ich ein Python-Programm so sichern, daß 
ich es in 10...15 Jahren noch ausführen/ändern kann (und auch noch das 
Gleiche herauskommt).

Für das Programm selbst: Trivial. So wie meine anderen Quelltexte auch.

Für den Python-Installer: Auch trivial. Muß ich mir eben 
sicherheitshalber eine virtuelle Maschine bereithalten, um Python dann 
auch installieren zu können.

Und jetzt der Knackpunkt: Die Pakete/Libraries.

Die meisten davon wurden über PIP aus einem Repository installiert. Das 
Repo wird garantiert nicht für alles Ewigkeit vorhanden sein oder gar 
die alten Versionen der Libraries vorhalten.

Wie bekomme ich meine benötigten, per PIP installierten Libraries 
gesichert?

Viele Grüße
W.T.

von Trollhunter (Gast)


Lesenswert?

Am besten auf Granittafeln kopieren.
;)

von Paul A. (wandkletterer)


Lesenswert?

Mache dir eine VM mit allen Dingen drin.

von Cyblord -. (Gast)


Lesenswert?

Walter T. schrieb:
> Die meisten davon wurden über PIP aus einem Repository installiert.

Und? Die liegen dann bei dir lokal und du kannst sie sichern.

von Christopher J. (christopher_j23)


Lesenswert?

Bei Python gibt es sogenannte "virtual environments" bzw. virtualenv. 
Damit kannst du pip dazu bringen, alle per pip installierten Pakete in 
einen Ordner deiner Wahl zu installieren:
https://docs.python-guide.org/dev/virtualenvs/#lower-level-virtualenv

von Walter T. (nicolas)


Lesenswert?

Abradolf L. schrieb:
> Und? Die liegen dann bei dir lokal und du kannst sie sichern.

Wie kann ich die lokal liegenden Pakete so sichern, daß sie anschließend 
wieder installierbar sind? Manche Pakete sind ja nur Bindings und 
verteilen noch munter Executables, die anderweitig installiert werden.

von Bernd K. (prof7bit)


Lesenswert?

Der Pragmatiker verlässt sich nur auf Pakete mit breiter Nutzerbasis, 
also solche die zu seinen Lebzeiten garantiert nicht mehr wegsterben 
werden und passt dann vielleicht alle 12 Jahre mal das eine oder andere 
Script das mit irgendeiner neuen Version nicht mehr läuft geringfügig an 
so daß es auf den jeweils aktuellen Versionen wieder läuft.

Wenn er das Script dann überhaupt noch braucht.

Es hat sich nämlich gezeigt daß diese Vorgehensweise 100 mal weniger 
Aufwand ist und viel entspannter als sich in der Gegenwart schon den 
ganzen Tag lang über ungelegte Eier der Zukunft den Kopf zu zerbrechen 
von denen sich bei 99% herausstellen wird daß alle Bedenken vollkommen 
unbegründet waren.

Disclaimer:
  * Übertreibungen erhöhen die Anschaulichkeit.
  * Der Sinn ist zu entnehmen und zu verinnerlichen

: Bearbeitet durch User
von Christopher J. (christopher_j23)


Lesenswert?

Wenn dir das mit virtualenv nicht reicht und du gerne die Sachen 
wirklich aus den Quellen installieren willst, dann kannst du auch bei 
pypi die Pakete als .whl bzw. .tar.gz herunterladen. Das ganze lässt 
sich dann von einem lokalen Ordner per pip installieren. Downloaden 
kannst du die Dateien auch mit pip:
https://pip.pypa.io/en/stable/reference/pip_download/

von Walter T. (nicolas)


Lesenswert?

Christopher J. schrieb:
> Wenn dir das mit virtualenv nicht reicht

Ehrlich gesagt: Ich habe die VirtualEnv und das Sichern für 
unabhängige/komplementäre Konzepte: Das Eine kann ich machen, wenn ich 
ein vorliegendes Alt-Projekt ans Laufen bekommen will, wenn ich die 
Libraries bekomme.

Das andere ist, die Libraries erst einmal zu sichern, um sie später 
virtuell einbinden zu können.


Christopher J. schrieb:
>  und du gerne die Sachen
> wirklich aus den Quellen installieren willst, dann kannst du auch bei
> pypi die Pakete als .whl bzw. .tar.gz herunterladen.

Super! Das habe ich gesucht.

Bernd K. schrieb:
> on denen sich bei 99% herausstellen wird daß alle Bedenken vollkommen
> unbegründet waren.

Schreibt vermutlich jemand, der noch nie ein altes Laufwerk für ein Band 
gesucht hat, auf dem der Quelltext für ein Fortran-Programm lag, mit dem 
vor 25 Jahren ein Walzgerüst ausgelegt wurde.

Ich halte es für elementar, die Möglichkeiten für eine Datensicherung zu 
kennen. Nur auf dieser Basis läßt sich eine Entscheidung treffen, ob man 
den Aufwand wirklich betreiben will.

von Bernd K. (prof7bit)


Lesenswert?

Walter T. schrieb:
> Schreibt vermutlich jemand, der noch nie ein altes Laufwerk für ein Band
> gesucht hat, auf dem der Quelltext für ein Fortran-Programm lag, mit dem
> vor 25 Jahren ein Walzgerüst ausgelegt wurde.

Wenn es 25 Jahre lang im Keller lag ohne daß jemand es mal für nötig 
befunden hat es am Laufen zu halten und zu pflegen oder wenigstens mal 
auf irgendwas neueres umzukopieren als die betreffenden Bandlaufwerke 
aus der Mode kamen dann kann er es auch genausogut auf den Müll werfen 
denn dann braucht er es offensichtlich sowieso schon lange nicht mehr.

: Bearbeitet durch User
von Bernd K. (prof7bit)


Lesenswert?

Walter T. schrieb:
> Ich halte es für elementar, die Möglichkeiten für eine Datensicherung zu
> kennen

Ich sichere meine eigenen Scripte. Die Abhängigkeiten kann ich mir 
jederzeit wieder aus dem Netz laden.

von soso (Gast)


Lesenswert?

Also ich bin auch für eine VM.
Eine Strategie fahren und bei Umstieg schauen, dass man die Kurve 
kriegt.

Evtl. mit Clonezilla Img. ziehen und ablegen.

Nun wäre dieser Ansatz für ein einzelnes Programm überdimensioniert. 
Aber so doll kann das doch nicht sein. Und wenn es tatsächlich 
hochverfügbar und kritisch ist, dann findet doch meist da eine 
Weiterentwicklung statt.

Und dazu gehört nun mal die Pflege der Abhängigkeiten.

von soso (Gast)


Lesenswert?

Bernd K. schrieb:
> Ich sichere meine eigenen Scripte. Die Abhängigkeiten kann ich mir
> jederzeit wieder aus dem Netz laden.

von soso (Gast)


Lesenswert?

Walter T. schrieb:
> Schreibt vermutlich jemand, der noch nie ein altes Laufwerk für ein Band
> gesucht hat, auf dem der Quelltext für ein Fortran-Programm lag, mit dem
> vor 25 Jahren ein Walzgerüst ausgelegt wurde.

Echt jetzt? Hatte ich noch nie. Aber vmtl. dann nicht Teil der SW 
Entwicklung. Die Maschinenbauer pythonisieren auch alles mögliche, ist 
auch keine Kunst.


Von der Seite aus betrachtet - VM, VM. ODer vielleicht doch VM?

von Vincent H. (vinci)


Lesenswert?

Wie wärs mit compilieren via PyInstaller?
Das packt den Interpreter inklusive Paketabhängigkeiten in ein 
executable.

von Dusan J. (dusan)


Lesenswert?

Ewig gibt im digitalen Bereich noch nicht. Theoretisch können Daten 10 
bis 20 Jahre lagern ohne Schaden zu nehmen. Was dabei Schaden nimmt sind 
die Speichermedien. In Granit meißeln war also wirklich das einzigste 
was an die Ewigkeit rankommt.

von Sheeva P. (sheevaplug)


Lesenswert?

Walter T. schrieb:
> Ehrlich gesagt: Ich habe die VirtualEnv und das Sichern für
> unabhängige/komplementäre Konzepte: Das Eine kann ich machen, wenn ich
> ein vorliegendes Alt-Projekt ans Laufen bekommen will, wenn ich die
> Libraries bekomme.
>
> Das andere ist, die Libraries erst einmal zu sichern, um sie später
> virtuell einbinden zu können.

Naja, das kann man natürlich miteinander kombinieren und sein 
virtualenv-Verzeichnis einfach mitsichern.

Davon abgesehen sind virtualenvs natürlich toll, um Pakete für bestimmte 
Projekte in bestimmten Versionen am System vorbei zu installieren, ohne 
das System zu "verschmutzen" oder an die vom System mitgelieferten 
Versionen und Pakete gebunden zu sein. Mittlerweile installiere ich nur 
noch sehr selten Pakete aus dem Systemrepos und mache fast alles mit 
virtualenvs.

von Sheeva P. (sheevaplug)


Lesenswert?

soso schrieb:
> Also ich bin auch für eine VM.

Vielleicht wenigstens ein Docker-Image... ;-)

von hah (Gast)


Lesenswert?

Bernd K. schrieb:
> Ich sichere meine eigenen Scripte. Die Abhängigkeiten kann ich mir
> jederzeit wieder aus dem Netz laden.

LOL

Lass mich raten: Du bist ein Millenial DevOp mit Schwerpunkt NodeJS?

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

1. Verschlüssle es mit einem guten Verschlüsselungsverfahren.
2. Verschlüssle das Ergebnis mit einem schwachen Verfahren.
3. Nenne es Anti-NSA-Hack-very-streng-geheim.doc.
4. Schicke es "versehentlich" an eine US-Behörde.

Danach kannst Du davon ausgehen, daß das sehr lange gespeichert 
bleibt...

von Tobias B. (Firma: www.elpra.de) (ttobsen) Benutzerseite


Lesenswert?

Bevor man gleich mit der dicken VM kommt: Ein Docker Container tuts 
evtl. auch. Hängt ein bisschen davon ab was das Python Skript macht 
(z.B. wenn viel Hardware gesteuert wird, wirds mit den Treibern vll. 
etwas eklig).

von Sven B. (scummos)


Lesenswert?

VM-Image oder kompletter Rechner der in der Ecke steht. Alles andere 
wird in 15 Jahren garantiert Arbeit. Docker-Images, pfff, keiner kann 
mir erzählen dass Docker in 15 Jahren noch ein Image lesen kann, was der 
heute erstellt hat. Kann ich mir einfach nicht vorstellen.

von Tobias B. (Firma: www.elpra.de) (ttobsen) Benutzerseite


Lesenswert?

Sven B. schrieb:
> Docker-Images, pfff, keiner kann
> mir erzählen dass Docker in 15 Jahren noch ein Image lesen kann, was der
> heute erstellt hat. Kann ich mir einfach nicht vorstellen.

Sollte das wirklich der Fall sein, kann man immer noch auf Plan B 
zurückgreifen: Docker in einer VM installieren.

Würde mich allerdings wundern, wenn Docker keine 15 Jahre mehr leben 
sollte.

von Bernd K. (prof7bit)


Lesenswert?

hah schrieb:
> Bernd K. schrieb:
>> Ich sichere meine eigenen Scripte. Die Abhängigkeiten kann ich mir
>> jederzeit wieder aus dem Netz laden.
>
> LOL
>
> Lass mich raten: Du bist ein Millenial DevOp mit Schwerpunkt NodeJS?

Nein, ich benutze aber auch einfach keine dubiosen Abhängigkeiten mit 
weltweit nur 3 Nutzern die nächstes Jahr plötzlich nicht mehr 
existieren. Ich recherchiere vorher welche Pakete auch von den meisten 
anderen eingesetzt/benötigt werden und daher ausreichend Pflege 
erfahren. Und schon ist das Problem verschwunden.

Und bei Python ist noch nicht so ein unheilbares Chaos ausgebrochen wie 
bei NodeJS, da kann man das noch gut im Griff behalten.

: Bearbeitet durch User
von Oliver S. (oliverso)


Lesenswert?

Bernd K. schrieb:
> Und schon ist das Problem verschwunden.

Probleme mit Backups tauchen grundsätzlich erst auf, wenn sie 
tatsächlich im Falle eines Falles gebraucht werden. Vorher ist 
grundsätzlich immer alles in Ordnung, man hat ja ein Backup ;)

Oliver

von hah (Gast)


Lesenswert?

Bernd K. schrieb:
> Nein, ich benutze aber auch einfach keine dubiosen Abhängigkeiten mit
> weltweit nur 3 Nutzern die nächstes Jahr plötzlich nicht mehr
> existieren. Ich recherchiere vorher welche Pakete auch von den meisten
> anderen eingesetzt/benötigt werden und daher ausreichend Pflege
> erfahren. Und schon ist das Problem verschwunden.
>
> Und bei Python ist noch nicht so ein unheilbares Chaos ausgebrochen wie
> bei NodeJS, da kann man das noch gut im Griff behalten.

Doch, auch bei Python liegt das Problem nicht anders (wenn auch (noch) 
geringer als bei Chaos^H^H^H^H^HNodeJS). Wenn Deine Deps ihrerseits Deps 
ziehen, verlierst Du spätestens hier die Kontrolle. Stichwort 
Dependency-Hell. Hat pip mittlerweile einen funktionierenden Resolver, 
oder werden immer noch Versionskonflikte einfach ignoriert?

Und nein, Du brauchst nix dubioses was nur 3 Leute nutzen. Erinnerst Du 
Dich evtl nicht mehr an left-pad?

Oder man denkt einfach mal ganz banal und nimmt an, daß in x Jahren das 
heute weltbeherrschende Repo einfach nicht mehr existiert. Wie war das 
mit MySpace und Geocities? Komm mir nun nicht mir "Repos sind was 
anderes", denn das sind die eben nicht. Wenn der Heuschreckenschwarm der 
DevOps auf ein neues Spielzeug schwenkt, dann kann das Alte recht 
schnell verschwinden.

Archiveren geht nur mit allen Deps. Und wer sagt denn daß in x Jahren 
Dein Python2 überhaupt noch auf Deinem OS dann läuft, Deps hin oder her?

von Nop (Gast)


Lesenswert?

hah schrieb:

> Archiveren geht nur mit allen Deps. Und wer sagt denn daß in x Jahren
> Dein Python2 überhaupt noch auf Deinem OS dann läuft, Deps hin oder her?

Wenn man Langzeitstabilität braucht, nimmt man ja auch weder 
Frickelkrams noch rein proprietäres Zeugs, sondern wählt eine Sprache, 
für die es einen brauchbaren ISO-Standard nebst etlichen 
Implementationen gibt.

C89 kann auch heute noch jeder C-Compiler, nach 3 Jahrzehnten, und mit 
C++ sieht's vergleichbar aus.

von Boris O. (bohnsorg) Benutzerseite


Lesenswert?

Microfilm oder mit Laser auf Klebeband. Eine goldene Scheibe soll auch 
gehen und wenn es ein Screenshot sein soll, kann man auch ein 
Video-Signal auf Schallplatten bringen…die goldene Scheibe mit deinem 
Python-Screenshot wird in 3000 Jahren DER Hit.

von Rolf M. (rmagnus)


Lesenswert?

Nop schrieb:
> C89 kann auch heute noch jeder C-Compiler, nach 3 Jahrzehnten, und mit
> C++ sieht's vergleichbar aus.

Nur kann man damit in der Praxis nicht viel machen ohne zusätzliche 
Bibliotheken, von denen man dann wieder abhängig ist.

von Walter T. (nicolas)


Lesenswert?

Rolf M. schrieb:
> Nur kann man damit in der Praxis nicht viel machen ohne zusätzliche
> Bibliotheken, von denen man dann wieder abhängig ist.

Der Unterschied ist: Wenn ich eine C-Entwicklungsumgebung unter Windows 
installiert habe, habe ich im Normalfall vorher jede einzelne Komponente 
heruntergeladen und sinnvollerweise auch die Installationsdateien 
gespeichert.

Wenn ich die Installation über einen Package-Manager mache, bin ich 
darauf angewiesen, dass dieser in der Zukunft noch existiert und 
kompatible Komponenten anbietet. Da sein Daseinszweck aber genau das 
Gegenteil ist (immer aktuelle, fehlerbereinigte Komponenten anbieten), 
haben das Package Repository und ich hier einen erheblichen 
Interessenskonflikt.

von Nop (Gast)


Lesenswert?

Rolf M. schrieb:

> Nur kann man damit in der Praxis nicht viel machen ohne zusätzliche
> Bibliotheken, von denen man dann wieder abhängig ist.

Welche meinst Du? Die für das GUI-Handling sind überall ein Problem, 
weil sich da in 20 Jahren soviel ändert, daß oftmals nichts mehr geht. 
Das umgeht man aber, wenn man das Programm modular aufbaut, so daß die 
eigentliche Programmfunktion über ein Terminalprogramm erreichbar ist. 
Das geht mit definiertem Interface über stdin/stdout, und im 
GUI-Programm forkt man das dann bloß noch.

So ähnlich ging das ja schon unter Unix und heute unter Linux, daß man 
eben nicht riesige monolithische Anwendungen baut, sondern lieber viele 
kleine Programme mit genau definiertem Zweck.

Geht es hingegen darum, daß man sich DLLs ins Projekt zieht, zu denen 
man nicht den Quelltext hat, dann ist nicht die Programmiersprache das 
Problem, sondern daß Anwendungen ohne Source naturgemäß nicht besonders 
portabel sind.

von Rolf M. (rmagnus)


Lesenswert?

Nop schrieb:
> Rolf M. schrieb:
>
>> Nur kann man damit in der Praxis nicht viel machen ohne zusätzliche
>> Bibliotheken, von denen man dann wieder abhängig ist.
>
> Welche meinst Du? Die für das GUI-Handling sind überall ein Problem,
> weil sich da in 20 Jahren soviel ändert, daß oftmals nichts mehr geht.

Dir fällt also ernsthaft außer GUI nichts weiter ein, was ein modernes 
Programm noch so über den reinen Grundumfang von ANSI C hinaus verwenden 
könnte?

> Geht es hingegen darum, daß man sich DLLs ins Projekt zieht, zu denen
> man nicht den Quelltext hat, dann ist nicht die Programmiersprache das
> Problem, sondern daß Anwendungen ohne Source naturgemäß nicht besonders
> portabel sind.

Ich sagte ja nicht, dass die Programmiersprache das Problem sei, sondern 
nur, dass nicht alles automatisch problemlos ist, nur weil man eine 
langlebige Sprache verwendet, so wie hier behauptet.
Und wenn man den Quelltext der Bibliotheken hat, löst das auch nicht 
alle Problem einfach so auf. Denn niemand hat Lust, erstmal ein Dutzend 
veraltete Libs auf ein neues System zu portieren, um das Programm wieder 
zum Laufen zu bekommen.

von Nop (Gast)


Lesenswert?

Rolf M. schrieb:

> Dir fällt also ernsthaft außer GUI nichts weiter ein, was ein modernes
> Programm noch so über den reinen Grundumfang von ANSI C hinaus verwenden
> könnte?

Das war ein Beispiel. Da Du damit angefangen hast, ist es ja wohl an 
Dir, mal konkreter zu werden.

> Ich sagte ja nicht, dass die Programmiersprache das Problem sei, sondern
> nur, dass nicht alles automatisch problemlos ist, nur weil man eine
> langlebige Sprache verwendet, so wie hier behauptet.

Das hat ja auch niemand außer Dir behauptet. Notwendig != hinreichend.

von Strubi (Gast)


Lesenswert?

Moin,

für nen Kunden, der mal Langzeitverfügbarkeit haben wollte, habe ich mal 
ne Ubuntu-Live-CD remastered, da gibt's ne Menge Anleitungen. Die kann 
er, solange er noch irgend einen PC findet, der von CDROM booten kann, 
in ein paar Minuten hochstarten und ist lauffähig. Fazit: Die CDROM 
liegt mit dem eigens dafür angeschafften Laptop irgendwo gut aufbewahrt 
im Keller, denn wer weiss, ob die HW in 20 Jahren noch i86 kompatibel 
sein wird..
Jetzt kann höchstens das Laufwerk wegen Nichtgebrauch irgendwann 
einharzen...aber die jährlichen Paranoia-Checks sind nicht mehr mein 
Bier :-)

Aber ganz im Ernst: Die Prozedur ist teurer als Ausdrucken des Source 
auf Papier und Reverse-/Re-Engineering mit der gängigen Technik in 20 
Jahren.

von Thomas G. (thgauweiler)


Lesenswert?

schreibe Dir Funktionstests, mit denen Du die korrekte Funktion auch 
nach einem Update von Bibliothek und/oder Python überprüfen kannst.

Oder erstelle ein Docker-Image, wie schon geschrieben wurde.

von Sven B. (scummos)


Lesenswert?

Nop schrieb:
> Das geht mit definiertem Interface über stdin/stdout, und im
> GUI-Programm forkt man das dann bloß noch.

mhm... wird sicher super lesbarer Code und schnell dazu, wenn da 
irgendwelche nichttrivialen Datenstrukturen oder -Mengen ausgetauscht 
werden sollen ...

von Vincent H. (vinci)


Lesenswert?

Noch besser als PyInstaller:
http://nuitka.net/

von Nop (Gast)


Lesenswert?

Sven B. schrieb:

> mhm... wird sicher super lesbarer Code und schnell dazu, wenn da
> irgendwelche nichttrivialen Datenstrukturen oder -Mengen ausgetauscht
> werden sollen ...

JSON-Parser gibt's wie Sand am Meer, da muß man gar nichts mehr 
entwickeln. Zudem erlaubt es auch das gescriptete Ausführen ganz ohne 
GUI. Das ist der zweite Grund, wieso das unter Unix so entwickelt wurde. 
Drittens generieren GUIs normalerweise keine nennenswerten Daten, 
sondern die kommen üblicherweise woanders her und werden dann allenfalls 
noch visualisiert.

Bei nennenswerter Komplexität ist es jedenfalls allemale besser, wenn 
man Teilmodule mit sauber definiertem Interface hat, als wenn alles in 
einem Monolithen mit geteilten Datenstrukturen steckt.

von Sven B. (scummos)


Lesenswert?

Nop schrieb:
> Sven B. schrieb:
>
>> mhm... wird sicher super lesbarer Code und schnell dazu, wenn da
>> irgendwelche nichttrivialen Datenstrukturen oder -Mengen ausgetauscht
>> werden sollen ...
>
> JSON-Parser gibt's wie Sand am Meer, da muß man gar nichts mehr
> entwickeln.

Abgesehen davon, dass halt die typische C++-Datenstruktur sehr weit 
davon entfernt ist, automatisch in JSON serialisierbar zu sein. Und 
davon, dass JSON unendlich langsam wird, wenn man mehr als 3 Integer 
verschickt.

> Zudem erlaubt es auch das gescriptete Ausführen ganz ohne
> GUI.

Ok, das kann ich aber auch anders erreichen, z.B. indem ich eine GUI- 
und eine CLI-Anwendung schreibe, die beide gegen dieselbe Shared Library 
linken.

> Drittens generieren GUIs normalerweise keine nennenswerten Daten,
> sondern die kommen üblicherweise woanders her und werden dann allenfalls
> noch visualisiert.

Genau. Und dazu muss ich die Daten ja von meinem CLI-Programm an die GUI 
weitergeben. Das Tool, was ich gerade bastle, visualisiert zum Beispiel 
einige MB Samples die in ein paar Sekunden von einer Photodiode 
gesammelt werden. Das Visualisieren dauert ca. 1 Sekunde, konvertieren 
in und von JSON wird mindestens 10 dauern.

> Bei nennenswerter Komplexität ist es jedenfalls allemale besser, wenn
> man Teilmodule mit sauber definiertem Interface hat, als wenn alles in
> einem Monolithen mit geteilten Datenstrukturen steckt.

Bis auf den letzten Satzteil stimme ich dem zu. Es ist auch nicht so, 
dass ich den "CLI-Anwendung mit stdout das von der GUI-Anwendung 
visualisiert wird"-Ansatz prinzipiell immer falsch fände. In vielen 
Fällen ist das aber keine brauchbare Lösung, weil die ausgetauschten 
Daten entweder zu komplex oder zu viele sind.

Dazu kommt noch eine Menge Komplexität, weil du Situationen handhaben 
musst wie "das CLI-Tool ist eine andere Version als das GUI-Tool", "das 
CLI-Tool ist gecrasht", "das CLI-Tool braucht ungewöhnlich lange um eine 
Antwort zu senden" etc. Unter Umständen brauchst du auch Dinge wie 
Events, die von der CLI-Anwendung generiert werden usw. Diese Dinge 
erhöhen natürlich auch die Stabilität der GUI-Anwendung, aber wenn du 
sie nicht machst, hast du tendentiell eher weniger Stabilität als ohne 
extra-Prozess.

: Bearbeitet durch User
von Dirk K. (merciless)


Lesenswert?

Nop schrieb:
> Das umgeht man aber, wenn man das Programm modular aufbaut, so daß die
> eigentliche Programmfunktion über ein Terminalprogramm erreichbar ist.

Du hast noch nie eine richtige GUI-Anwendung geschrieben:
-Client/Server
-dutzende Dialoge, die mit Controls so vollgestopft sind,
 dass ein 24"-Monitor zwingend erforderlich ist
-komplexe DB-Zugriffe
-...

JSON? LOL!

merciless

von Nano (Gast)


Lesenswert?

Vincent H. schrieb:
> Wie wärs mit compilieren via PyInstaller?
> Das packt den Interpreter inklusive Paketabhängigkeiten in ein
> executable.

Damit kannst du das Binary vielleicht in 20 Jahren noch ausführen, aber 
ändern wird definitiv schwierig.

Den Quellcode würde ich auf alle Fälle sichern.

@Threadstarter

Wie wäre es, wenn du die wenig unterstützten Abhängigkeiten los wirst 
und dir deine eigene libs schreibst?
So dass du nur den Pythoninterpreter und die paar wenigen von vielen 
benutzten Libs sichern musst?

von Nano (Gast)


Lesenswert?

Sheeva P. schrieb:

> Davon abgesehen sind virtualenvs natürlich toll, um Pakete für bestimmte
> Projekte in bestimmten Versionen am System vorbei zu installieren, ohne
> das System zu "verschmutzen" oder an die vom System mitgelieferten
> Versionen und Pakete gebunden zu sein. Mittlerweile installiere ich nur
> noch sehr selten Pakete aus dem Systemrepos und mache fast alles mit
> virtualenvs.

Und Sicherheitspatches bekommen die dann keine mehr.

von Nano (Gast)


Lesenswert?

Strubi schrieb:
> Moin,
>
> für nen Kunden, der mal Langzeitverfügbarkeit haben wollte, habe ich mal
> ne Ubuntu-Live-CD remastered, da gibt's ne Menge Anleitungen. Die kann
> er, solange er noch irgend einen PC findet, der von CDROM booten kann,
> in ein paar Minuten hochstarten und ist lauffähig. Fazit: Die CDROM
> liegt mit dem eigens dafür angeschafften Laptop irgendwo gut aufbewahrt
> im Keller, denn wer weiss, ob die HW in 20 Jahren noch i86 kompatibel
> sein wird..
> Jetzt kann höchstens das Laufwerk wegen Nichtgebrauch irgendwann
> einharzen...aber die jährlichen Paranoia-Checks sind nicht mehr mein
> Bier :-)

Da reicht ein Sturmregen mit überschwemmtem Keller und das Notebook und 
Laufwerk ist hin.
Lediglich die CD-ROM selbst hat geringfügig bessere Chancen das zu 
überleben, wenn man sie schnell aus dem Wasser befreit.
Irgendwo habe ich mal gelesen, dass das Material einer CD Wasser auf 
Dauer nicht mag.


> Aber ganz im Ernst: Die Prozedur ist teurer als Ausdrucken des Source
> auf Papier und Reverse-/Re-Engineering mit der gängigen Technik in 20
> Jahren.

Das NB ist wahrscheinlich billiger als der Programmierer.
Aber man könnte auch einen Raspberry Pi 3 aufbewahren, der ist klein und 
kostengünstig und könnte auch wasserdicht verpackt werden. Python läuft 
auf dem auch.

von Tobias B. (Firma: www.elpra.de) (ttobsen) Benutzerseite


Lesenswert?

Nano schrieb:
> Lediglich die CD-ROM selbst hat geringfügig bessere Chancen das zu
> überleben, wenn man sie schnell aus dem Wasser befreit.
> Irgendwo habe ich mal gelesen, dass das Material einer CD Wasser auf
> Dauer nicht mag.

CD ROMs haben auch ohne Wassereinwirkung eine relativ kurze Lebensdauer, 
da gibt es deutlich bessere Medien. Z.B. RDX Laufwerke sollen 30 Jahre 
Lebensdauer haben. Ob das aber wirklich eingehalten wird in der Praxis, 
steht auf einem anderen Blatt. Zumindest jede CD ROM sollten sie 
überleben.

von Sheeva P. (sheevaplug)


Lesenswert?

Nano schrieb:
> Sheeva P. schrieb:
>> Davon abgesehen sind virtualenvs natürlich toll,
>
> Und Sicherheitspatches bekommen die dann keine mehr.

Tipp: wir reden über Langzeitarchivierung. ;-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.