[Überarbeitet] Umstieg von Basic auf Python: Erfahrungsbericht

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

preklov
***
Beiträge: 76
Registriert: Mo, 29.06.2009 09:04
Wohnort: Ruhrgebiet

Re: Umstieg von Basic auf Python: Erfahrungsbericht

Beitrag von preklov »

mglw. hast du eine andere toolsbox.py weiter oben im Suchbaum von python?
Nein, in "/home/volker/.openoffice/4/user/Scripts/python/pythonpath" liegt tools.py. Die unterschiedlichen Namen waren Absicht. im AOO-installationsverzeichnis ist auch nichts.

Schöne Grüße
Volker
Schöne Grüße
Volker
Karolus
********
Beiträge: 7440
Registriert: Mo, 02.01.2006 19:48

Re: Umstieg von Basic auf Python: Erfahrungsbericht

Beitrag von Karolus »

Hallo

Jetzt hab ich getestet:

Code: Alles auswählen

#$(document)/Scripts/python/mytest.py

from ppp import toolbox as tb

def main():
    tb.grok()
    tb.spam()
    tb.ham()
 

Code: Alles auswählen

#$(document)/Scripts/python/ppp/toolbox.py

def grok():
    pass
def spam():
    pass
def ham():
    pass

Code: Alles auswählen

#Auszug aus der manifest.xml

<manifest:file-entry manifest:full-path="Scripts/python/ppp/toolbox.py" manifest:media-type=""/>
 <manifest:file-entry manifest:full-path="Scripts/python/ppp/" manifest:media-type="application/binary"/>
 <manifest:file-entry manifest:full-path="Scripts/python/mytest.py" manifest:media-type=""/>
 <manifest:file-entry manifest:full-path="Scripts/python/" manifest:media-type="application/binary"/>
 <manifest:file-entry manifest:full-path="Scripts/" manifest:media-type="application/binary"/> 
[edit: irgendwie hab ich die falsche manifest.xml erwischt → ist jetzt korrigiert ]
[edit2: solange man auf einer noch nicht abgespeicherten Datei arbeitet funktioniert das obere sobald man das Ding abspeichert und wieder öffnet funktioniert das nicht mehr --- schei...!!!]
Der Aufruf der Function `main` über die GUI funktioniert ohne Fehlermeldung.

Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
preklov
***
Beiträge: 76
Registriert: Mo, 29.06.2009 09:04
Wohnort: Ruhrgebiet

Re: Umstieg von Basic auf Python: Erfahrungsbericht

Beitrag von preklov »

Irgendwie bin ich erleichtert. Denn ich habe hier getestet wie irre und bin immer auf den Fehler gestoßen: No module named toolbox.

Es läuft wahrscheinlich darauf hinaus, dass mein Ausgangspunkt wohl zutrifft, dass der Pythonpath in Dokumenten nicht funktioniert. Ich erinnere mich auch dunkel, dass ich das vor längerer Zeit mal getestet hatte. Aber ich habe so viel getestet :?

[edit]
Karolus schreibt, dass der Import klappt, wenn die Datei noch nicht geladen ist. Ich glaube, ich habe die Lösung. Wenn schon der Pfad zu einem Unterverzeichnis nicht zu funktionieren scheint, so kann meine ursprüngliche Lösung doch noch für verschiedene Module in "Scripts/python/" klappen:

Ich habe also in "Scripts/python/" sagen wir 3 Dateien: macros01.py, macros02.py, toolbox.py

In macros01.py und macros02.py will ich toolbox importieren. In beiden Dateien steht also am Anfang:

Code: Alles auswählen

import uno
import os
import sys
doc = XSCRIPTCONTEXT.getDocument()
try:
    from toolbox import *
except:
    pythonPath = uno.fileUrlToSystemPath(doc.URL) + '/Scripts/python'
    if pythonPath not in sys.path: sys.path.append(pythonPath)
    from toolbox import *
Somit kann ich die Toolbox laden, wenn die Datei gespeichert ist, wie auch, wenn sie als neu aus einer Dokumentvorlage kommt. Ich teste das noch aus.
[/edit]

Schöne Grüße
Volker
Schöne Grüße
Volker
preklov
***
Beiträge: 76
Registriert: Mo, 29.06.2009 09:04
Wohnort: Ruhrgebiet

Re: Umstieg von Basic auf Python: Erfahrungsbericht

Beitrag von preklov »

Schade, meine Idee ist wohl eine Sackgasse gewesen. Ich muss mich damit abfinden, dass der Pythonpath in Dokumenten nicht funktioniert.

Ich melde mich, wenn ich den Erfahrungsbericht bearbeitet habe.

Schöne Grüße
Volker
Schöne Grüße
Volker
preklov
***
Beiträge: 76
Registriert: Mo, 29.06.2009 09:04
Wohnort: Ruhrgebiet

Re: Umstieg von Basic auf Python: Erfahrungsbericht

Beitrag von preklov »

So, der Erfahrungsbericht ist nun überarbeitet und zum Download auf meiner Homepage bereitgestellt:
https://www.uni-due.de/~abi070/

Ich hoffe, er kann ein wenig hilfreich sein.

Schöne Grüße
Volker
Schöne Grüße
Volker
preklov
***
Beiträge: 76
Registriert: Mo, 29.06.2009 09:04
Wohnort: Ruhrgebiet

Re: [Überarbeitet] Umstieg von Basic auf Python: Erfahrungsbericht

Beitrag von preklov »

So, das Ganze steht jetzt auch im Wissensarchiv:
Korrektur:
http://www.oooforum.de/viewtopic.php?f=25&t=66819
Schöne Grüße
Volker
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: [Überarbeitet] Umstieg von Basic auf Python: Erfahrungsbericht

Beitrag von Stephan »

Ich wollte das schon neulich fragen und ich tue es jetzt einmal:

gibt es das Dokument "Kostenabrechnung.ods" nicht zum Download oder übersehe ich das nur?

Ich denke schon das es gut wäre wenn man sich die im PDF beschrieben Dinge auch am Originaldokument ansehen könnte, gerade für die die es normalerweise nicht gewohnt sind den 'internen' Inhalt von ODF-Dokumenten selbst zu bearbeiten.


Gruß
Stephan
preklov
***
Beiträge: 76
Registriert: Mo, 29.06.2009 09:04
Wohnort: Ruhrgebiet

Re: [Überarbeitet] Umstieg von Basic auf Python: Erfahrungsbericht

Beitrag von preklov »

gibt es das Dokument "Kostenabrechnung.ods" nicht zum Download oder übersehe ich das nur?
Nein und nein. Aus im Wesentlichen drei Gründen, die ich nicht diskutieren möchte:
  • Die Datei ist für den Gebrauch einiger weniger Personen vorgesehen und ist daher in Teilen persönlich. Was nicht heißt, dass man sie nicht anonymisieren könnte.
  • Der real existierende Kontext kann nicht als allgemein bekannt angenommen werden und müsste heftig erläutert werden.
  • Der wichtigste Grund aber ist, dass ich als Blinder nicht glaube, andere Blinde führen zu können. Ich betrachte mich immer noch als Anfänger in der Python-Programmierung und staune immer wieder, wenn ich Problemlösungen von Könnern sehe. Wenn ich die Kostenabrechnung ins Netz stelle, fürchte ich, schlechte (oder zumindest verbesserungsbedürftige) Beispiele zu liefern.
Ich habe beileibe keine Angst vor Kritik, würde sie sogar begrüßen. Daher werde ich Einzelaspekte auswählen und sie zur Diskussion stellen. Karolus und andere werden freundlich genug sein, mich zu korrigieren.

Mit Python zu programmieren lernt man sicher besser in der User-Umgebung beginnend mit ganz einfachen Strukturen, die nach und nach komplexer werden. Dieser Weg hat mir jedenfalls gut geholfen, und zwar immer wieder neu mit jedem neuen Problem. Für reine Python-Tests ohne OO-Beteiligung ist die Konsole im Spyder eine wunderbare Spielwiese.

Um die interne Struktur einer ods-Datei in der Form zu sehen, wie ich sie beschrieben habe, genügt es sicher, zwei oder drei einfache Dialoge in der IDE zu bauen, einfache Basic-Funktionen als Ereignisbehandlung zu definieren und dann schauen, wie das so aussieht. Und wenn man dann die Basic-Prozeduren Stück für Stück durch Python-Funktionen ersetzt, kann man den Arbeitsablauf besser nachvollziehen als mit einer fertigen Datei mit fast 3000 Zeilen Code, deren Sinnhaftigkeit man sich mühsam erschließen muss. Um die Pfaderweiterung zu testen, sollten mindestens zwei Python-Module verwendet werden, von denen eines als Library importiert wird (zum Beispiel mit der msg_box-Funktion).

Schöne Grüße
Volker
Schöne Grüße
Volker
Antworten