Gnumerics Python Interpreter

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
zarathustra
User
Beiträge: 59
Registriert: Samstag 17. April 2010, 23:02

Guten Abend,

ich habe mal einige Fragen zu Gnumerics mit Python. Ich bin auf Linux und mit Macports auch auf Mojave.

Ich möchte den Installationspfad des Gnumerics-Python-Interpreters ermitteln, damit ich ich gezielt mit dessen pip dort numpy, matplotlib, wxPython etc. installieren kann.

Ich habe festgestellt, dass beim Spiel mit der Python-Konsole unter Gnumerics der Befehl "import Gnumerics" funktioniert, aber außerhalb -in einem Terminal gestarteten Python- nicht.

Zum Ausprobieren von Skripten die "import Gnumerics" verwenden, würde ich gerne in einer IDE / Editor (z.B. unter Sublime oder Geany) diesen Interpreter einstellen um meinen "Krempel" testen zu können -funktioniert vermutlich nur wenn gleichzeitig Gnumerics geöffnet ist, damit man z.B. beim schreiben in Zellen nicht in's Leere läuft.

Kann mir da jemand Tipps geben?

Vielen Dank!

Zarathustra
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das unterstellt das es so einen Interpreter gibt. Muss es aber nicht. Unsere Anwendung bettet Python ein, einen extra Interpreter liefern wir aber nicht mit. Und die wichtigsten Module/Klassen kannst du auch nur benutzen, wenn die Software läuft. Das ist ja der Sinn des ganzen.

Du kannst es mal mit sys.executable versuchen. Aber wie gesagt - unwahrscheinlich. Mit sys.path bekommt du aber Ggf heraus, wohin du Pakete installieren musst. Geht dann halt nicht mit pip.

Last but not least: wir haben das schon mal diskutiert, scheint aber noch nicht durchgedrungen zu sein: deine Liebe zu wx in allen Ehren, aber man kann verschiedene GUI toolkits nicht mischen. Und Gnumeric benutzt (das um Längen bessere) GTK.
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

viewtopic.php?t=43994

Zur Erinnerung.
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Und hier der Code, der Python hochzieht. Dem kannst du probieren ein bisschen zu folgen, aber für mein dafürhalten ist damit schon belegt, was ich erwähnt habe: da wird ein Interpreter eingebettet. Das müsste der entsprechende Systems-Interpreter sein. Wenn du dafür also Pakete installierst, sollten die auch nutzbar sein. Man muss allerdings wohl die Pfade selbst anpassen, weil der daran Schrauben wird denke ich mal.

https://github.com/GNOME/gnumeric/blob/ ... ter.c#L102
zarathustra
User
Beiträge: 59
Registriert: Samstag 17. April 2010, 23:02

Hallo __deets__,

danke für die Info's.
Auf meinem Debian Cinnamon ist es tatsächlich so, dass der Gnumeric-Python-Interpreter dem System-Python entspricht. Man braucht hier auch kein wxPython, GTK (import gi) ist vorhanden und man kann das benutzen. Für GUI-Entwicklung nimmt man dann vermutlich glade für gtk-3 denke ich.

Die "anderen Verdächtigen" (pandas, matplotlib, numpy etc.) lassen sich in der Gnumeric-Python-Konsole auch laden und ein Matplotlib-Plot ausgeben.

Um das Zusammenspiel zwischen GUI, numpy, Gnumeric auszuprobieren muß man sich vermutlich direkt hiermit beschäftigen:

https://help.gnome.org/users/gnumeric/s ... on.html.en

Hier dann Kapitel 18.3.4

Aus einer IDE heraus zu Testen funzt dann wohl eher nicht.

Auf dem Mac habe ich den Ort des Gnumeric-Python-Interpreters ausfindig gemacht und dort mit easy_install zunächst pip installiert. Anschließend konnte ich numpy, scipy, pandas, matplotlib installieren und über die Konsole des Gnumeric-Python auch importieren.

Allerdings macht matplotlib Probleme. Es liefert den Fehler, dass Python nicht als framework installiert sei:

Python is not installed as a framework. The Mac OS X backend will not be able to function correctly if Python is not installed as a framework. See the Python documentation for more information on installing Python as a framework on Mac OS X. Please either reinstall Python as a framework, or try one of the other backends. If you are using (Ana)Conda please install python.app and replace the use of 'python' with 'pythonw'. See 'Working with Matplotlib on OSX' in the Matplotlib FAQ for more information.

auch matplotlib.use('GTK3Agg') hat hier keine Abhilfe.

Wenn ich dieses Beispiel: https://matplotlib.org/gallery/user_int ... gskip.html in Teilen umsetze, dann erscheint zwar das Plotfenster, aber das dicke Ende kommt beim Schließen des Plotfensters. Gnumeric stürzt ab.

Hast Du da evtl. einen Tipp?

Danke!
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich denke nicht, dass die Warnung relevant ist. Python mag nicht als Framework installiert sein (wie lautet denn der volle Pfad zum Interpreter?) - aber die App Gnumeric ist es ja.

Das Problem liegt eher darin, dass du ein ungeeignetes Beispiel nimmst. Das geht nämlich davon aus, das es das Programm beenden kann, wenn du die gui schließt. Und das geht natürlich nicht.

Such dir Beispiele zum einbetten von matplotlibviews. Das sollte klappen.
zarathustra
User
Beiträge: 59
Registriert: Samstag 17. April 2010, 23:02

Der Pfad zum Interpreter ist:

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin

Zumindest konnte ich mit der dortigen Python-Datei Python 2.7.16 (welches dem von Gnumeric entspricht) im Mac-Terminal starten.

Mein Mac enthält auch noch eine 2.7.10 Installation (das ist, meine ich, die Mac'sche Urinstallation die er damals von Haus aus inne hatte), sowie eine "händisch durchgeführte" 3.7-Installation. Und bei meinen Suchereien bin ich auch noch auf 3.6 gestoßen.
Zugegeben, etwas viel Durcheinander. Aber in der .bash_profile gibt es nur den Pfad zur 3.7 und 2.7.10.
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das ist ja sogar ein Framework. Aber wie gesagt- das Problem liegt eh woanders.
zarathustra
User
Beiträge: 59
Registriert: Samstag 17. April 2010, 23:02

Hhmm ob GTK um Längen besser ist weiß ich nicht.

Gerade habe ich via pip3 install pycairo und pip3 install PyGObject installiert und ein Testfenster erzeugt. GTK braucht XQuartz,
wxPython nicht. Unter XQuartz sieht es etwas verwaschener aus. Auch das Gnumeric.
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@zarathustra: Gtk *ist* um Längen besser als wxWidgets. Deine Probleme liegen am Betriebssystem. Nimm halt was vernünftiges und nicht dieses angebissene Obst. 😜
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
zarathustra
User
Beiträge: 59
Registriert: Samstag 17. April 2010, 23:02

Hab' ja diverse Linux unter Parallels am Start, daran liegt es nicht. Mit Debian und Cinnamon-Desktop funzt es ja.

Ich habe da noch die Fehlermeldungen im Terminal die beim Start von gnumerics (mit gnumerics am Terminal) kommen, bzw. nach einigen Sekunden wenn das Plotfenster offen ist bzw. nach dem Absturz wenn man das Plotfenster über das Kreuz schließt.

Evtl. interessiert es ja jemanden:

dbus[64176]: Dynamic session lookup supported but failed: launchd did not provide a socket path, verify that org.freedesktop.dbus-session.plist is loaded!

** (gnumeric:64176): WARNING **: 10:21:39.385: Failed to load shared library 'libcairo-gobject.2.dylib' referenced by the typelib: dlopen(libcairo-gobject.2.dylib, 9): image not found
Function sum still has a usage count of 1
Leaking expression at 0x7fe2a80aa028: #BEZUG!.
Leaking expression at 0x7fe2a80aa048: "Blatt1".
Leaking expression at 0x7fe2a80aa068: #BEZUG!.
Leaking expression at 0x7fe2a80aa088: "Blatt2".
Leaking expression at 0x7fe2a80aa0a8: #BEZUG!.
Leaking expression at 0x7fe2a80aa0c8: "Blatt3".

** (gnumeric:64176): WARNING **: 10:22:09.463: Leaked 6 nodes from expression pool for small nodes.
Leaking 7 values.
Leaking style at 0x7fe2a80a4008.
Style Refs 2
Color.Back: ff:ff:ff auto
Color.Pattern: 0:0:0
Border.Top: 0
Border.Bottom: 0
Border.Left: 0
Border.Right: 0
Border.RevDiagonal: 0
Border.Diagonal: 0
pattern 0
Color.Fore: 0:0:0
name 'Sans'
not bold
not italic
no underline
no strikethrough
no super or sub
size 10,000000
format 'General'
valign 2
halign 1
indent 0
rotation 0
text dir 0
wrap text 0
shrink to fit 0
locked 1
hidden 0
validation 0x0
hlink 0x0
input msg 0x0
conditions 0x0
Leaking style at 0x7fe2a80a4130.
Style Refs 1
Color.Back: ff:ff:ff auto
Color.Pattern: 0:0:0
Border.Top: 0
Border.Bottom: 0
Border.Left: 0
Border.Right: 0
Border.RevDiagonal: 0
Border.Diagonal: 0
pattern 0
Color.Fore: 0:0:0
name 'Sans'
not bold
not italic
no underline
no strikethrough
no super or sub
size 10,000000
format 'General'
valign 2
halign 1
indent 0
rotation 0
text dir 0
wrap text 0
shrink to fit 0
locked 1
hidden 0
validation 0x0
hlink 0x0
input msg 0x0
conditions 0x0
Leaking style at 0x7fe2a80a4258.
Style Refs 1
Color.Back: ff:ff:ff auto
Color.Pattern: 0:0:0
Border.Top: 0
Border.Bottom: 0
Border.Left: 0
Border.Right: 0
Border.RevDiagonal: 0
Border.Diagonal: 0
pattern 0
Color.Fore: 0:0:0
name 'Sans'
not bold
not italic
no underline
no strikethrough
no super or sub
size 10,000000
format 'General'
valign 2
halign 1
indent 0
rotation 0
text dir 0
wrap text 0
shrink to fit 0
locked 1
hidden 0
validation 0x0
hlink 0x0
input msg 0x0
conditions 0x0

** (gnumeric:64176): WARNING **: 10:22:09.463: Leaked 3 nodes from style pool.
Leaking style-border at 0x7fe2aa156de0 [color=0x7fe2aa154e50 line=0] refs=19.
Leaking style-color at 0x7fe2aa137970 [000000ff].
Leaking style-color at 0x7fe2aa154e30 [000000ff].
Leaking style-color at 0x7fe2aa154e50 [c7c7c7ff].
Leaking style-color at 0x7fe2aa154e40 [ffffffff].
Leaking GOFormat at 0x7fe2aa154df0 [General].
Leaking string [Print_Area] with ref_count=3.
Leaking string [Sheet_Title] with ref_count=3.
Leaking string [Sans] with ref_count=3.
Leaking string [Blatt1] with ref_count=1.
Leaking string [Blatt2] with ref_count=1.
Leaking string [Blatt3] with ref_count=1.
Leaking string [#BEZUG!] with ref_count=3

Ich geh' auf Linux.
zarathustra
User
Beiträge: 59
Registriert: Samstag 17. April 2010, 23:02

Ein par Fragen habe ich doch noch bzw. wieder.

Habe jetzt auf Linux das hier: https://help.gnome.org/users/gnumeric/s ... on.html.en und hier dann Kapitel 18.3.4 ausprobiert.

Das funktionierte auf Anhieb, bis auf die Sache mit der Funktionsbeschreibung, die in der GUI-Liste der Funktionen erscheinen soll. Da erscheint nix.

Als nächstes interessiert mich, wie ich eine GTK-GUI hier aufrufe. Das GUI-Beispiel "Make a Menue" habe ich mir im Ordner angesehen. Diesem liegt eine plugin.so Zugrunde. Das ist doch eine compilierte Datei, unter Windows DLL genannt, oder? D.h. man kann mit Gnumerics auch compilierte Dateien ansprechen?
Aber primär interessiert mich der Aufruf eines GTK-GUI. Kann man sich auch eine Werkzeugleiste mit Symbolen bauen von denen man aus seine Python-Skripte aufruft? Wo findet man da Informationen drüber?

Vielen Dank!
zarathustra
User
Beiträge: 59
Registriert: Samstag 17. April 2010, 23:02

Irgendwie scheint die Programmierschnittstelle nicht so üppig dokumentiert zu sein.

Und es scheint teilweise nicht "sauber" zu funktionieren. Bei meinen Funktionstests, das Addieren zweier Zahlen, funktionierte zunächst nur mit Semikolon als Trenner zwischen den Zahlen. Zwischendurch aber auch mit Komma. Dann wieder Semikolon. Das liegt vermutlich daran, dass Systemweit Komma statt Punkt als Dezimaltrenner eingestellt ist. Finde allerdings nicht wo ich es umstellen kann.

Wo kann man sich denn ein Beispiel ansehen wie eine Python-Gtk-GUI aufgerufen wird? Das Beispiel unter "Werkzeuge" --> "Make a Menu" --> "Testing Testing 123" zeigt in seinem Plugin-Ordner zwei XML-Dateien, welche die Beschriftungen "Make a Menu" und "Testing Testing 123" enthalten, die GUI kommt vermutlich aus der plugin.so

/usr/lib/gnumeric/1.12.32/plugins/uihello/plugin.so --> Hier steckt vermutlich die GUI drinnen

/usr/lib/gnumeric/1.12.32/plugins/uihello/plugin.xml --> Hier die Texte "Make a Menu" und "Testing Testing 123"

Für etwas Anschub bin ich dankbar.
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich glaube du verrennst dich da. Das Plugin ist in C geschrieben. Man kann aber auch Python Plugins schreiben. https://github.com/GNOME/gnumeric/tree/ ... ns/py-func ist der roh-Zustand, das sollte dann aber auch umgewandelt werden zu einem normalen XML etc.

Und das Thema ist wieder so speziell, das sich da hier kaum wer auskennen wird. Du sollest auch bei stakoverflow oder deren Mailingliste nach Hinweisen suchen. Und ggf ist es deutlich einfacher, NICHTS mit GUI IN Gnumeric zu machen, sondern Daten zu exportieren & dann extra zu verarbeiten. Ich zumindest würde das so machen. Das einen 100%ige Integration anzustreben ist 80% der Arbeit.
zarathustra
User
Beiträge: 59
Registriert: Samstag 17. April 2010, 23:02

Schade. Ich dachte man könnte Python -mit Gtk als GUI-Toolkit und seinen sonstigen Modulen- als "Makroprogrammiersprache" für Gnumerics verwenden. So halt wie VBA in Excel, nur eben besser als VBA...
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Kann sein, dass das geht. Muss aber nicht. Weiß ich nicht abschließend. Das rauszufinden kostet mich ein paar Stunden Arbeit. Die Zeit habe ich nicht. Wenn du die Leute die es programmiert haben fragst, wissen die das ggf sofort.
Antworten