Schwierigkeiten mit der Installation von wxPython (Linux)

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Benutzeravatar
wuf
User
Beiträge: 1483
Registriert: Sonntag 8. Juni 2003, 09:50

Mittwoch 29. April 2009, 20:25

Liebe wxPython Freunde

Ich komme aus der Tkinter-Umgebung. Da mich aber auch eure Beträge sehr interessieren und die Code-Snippets ausprobieren möchte habe ich mich entschlossen wxPython zu installieren.

Mein lokaler Setup ist wie folgt:
Linux SuSE 11.0
Python 2.6

Mein Installations-Vorgehen ist wie folgt:

1. Herunterladen der wxPython-Archivdatei:
wxPython-src-2.8.9.2.tar.bz2
als Systemadministartor von http://sourceforge.net/project/download ... ror=switch
in das Verzeichnis:
/tmp

2. Entpacken der wxPython-Archivdatei im Verzeichnis /temp
Dies erstellt automatisch folgendes Verzeichnis:
/tmp/wxPython-src-2.8.9.2

3. Wechsel in das Verzeichnis /tmp/wxPython-src-2.8.9.2
a) Ausführen von:
./configure --prefix=/usr/local/lib/wx/2.8 --with-gtk --with-gnomeprint --with-opengl --enable-debug --enable-debug_gdb --enable-geometry --enable-graphics_ctx --enable-sound --with-sdl --enable-mediactrl --enable-display --enable-unicode --with-libjpeg=builtin --with-libpng=builtin --with-libtiff=builtin --with-zlib=builtin

b) Ausführen von:
make $* && make -C contrib/src/gizmos $* && make -C contrib/src/stc $*

c) make install
Dies erstellt automatisch das Verzeichnis:
/usr/local/lib/wx

4. Wechsel ins Verzeichnis:
/tmp/wxPython-src-2.8.9.2/wxPython
a) export LD_LIBRARY_PATH=/usr/local/lib/wx/2.8/lib

b) export PYTHONPATH=/tmp/wxPython-src-2.8.9.2/wxPython

c) python2.6 setup.py install

DIESE AKTION HINTERLAESST EINE UNZAHL VON FEHLERMELDUNGEN !!!

Ich musste die wxPython-Installation leider erfolglos beenden. Kann jemand von euch in meinem vorgehen Fehler feststellen. Bin für jede Hilfe dankbar.

Gruss wuf :wink:
Take it easy Mates!
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 29. April 2009, 21:22

Warum installierst du wxPython nicht einfach aus dem Repository?
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Mittwoch 29. April 2009, 21:46

Hallo wuf!

Damit installierst du dir wxPython inklusive Beispiele:

Code: Alles auswählen

sudo zypper install python-wxGTK-examples

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
wuf
User
Beiträge: 1483
Registriert: Sonntag 8. Juni 2003, 09:50

Mittwoch 29. April 2009, 22:31

Hallo Leonidas & gerold

Danke für eure Antworten

@Leonidas: Wie es so ist, wenn einem schon einige Installationen anderer Programme bzw. Packete aus dem web mit der bekannten Befehls-Sequenz .configure, make, make install oder python setup.py install problemlos gelungen ist, probiert man es immer wieder.In diesem Falle aber wurde ich durch etwas mir noch nicht bekanntes Schach-Matt gesetzt. Ich versuchte mich durch die INSTALL.txt und BULD.txt Dateien zu lesen. Diese sind nicht so leicht zu verstehen ohne herumexperimentieren zu müssen. OK. Habe jetzt wxPython über das Repository für Python 2.5 installiert. Und es scheint zu funktionieren.

@gerold: Deines muss ich noch ausprobieren. Wie sieht deine Befehlszeile aus, wenn ich die wxPython-Installation explizit für Python 2.6 durchführen möchte?

Nochmals vielen Dank für eure Unterstützung.

Gruss wuf :wink:
Take it easy Mates!
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 29. April 2009, 22:46

wuf hat geschrieben:Wie es so ist, wenn einem schon einige Installationen anderer Programme bzw. Packete aus dem web mit der bekannten Befehls-Sequenz .configure, make, make install oder python setup.py install problemlos gelungen ist, probiert man es immer wieder.
Das ist - generell - eine schlechte Idee. Wenn es einen Paketmanager gibt, sollte man ihn nutzen. Dadurch hat man eine einheitliche Schnittstelle zur Softwareinstallation (nicht jedes Paket nutzt autotools oder distutils - es gibt auch noch waf oder SCons, etc), einfache Updates, ein sauberes System und außerdem ist es noch wesentlich einfacher (es ist nicht nötig, irgendwelche Header zu sammeln, irgendwelche Compiler zu installieren, etc.).
wuf hat geschrieben:In diesem Falle aber wurde ich durch etwas mir noch nicht bekanntes Schach-Matt gesetzt.
Vermutlich braucht wxPython noch wxWidgets. Kannst du entweder aus dem Repository nehmen (wird automatisch als Dependency installiert) oder selbst kompilieren. In letzterem Fall brauchst du sicherlich noch die GTK+-Header, dazu kannst du entweder die Header aus dem Repository installieren oder GTK+ kompilieren. In letzterem Fall brauchst du wohl die xlib-Header, da kannst du entweder die Header aus dem Repository nehmen oder X.org selbst kompilieren. Dazu brauchst du die glibc-Header, die kannst du entweder aus dem Repository nehmen oder die glib selbst kompilieren.
Worauf ich hinaus will: man macht sich eine Menge unnötiger Arbeit durch Source-Installationen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Mittwoch 29. April 2009, 23:01

wuf hat geschrieben:Wie sieht deine Befehlszeile aus, wenn ich die wxPython-Installation explizit für Python 2.6 durchführen möchte
Hallo wuf!

Das weiß ich jetzt nicht auswendig. Aber das kannst du selber herausfinden, indem du zuerst mal mit

Code: Alles auswählen

zypper find wxGTK
...oder war es
zypper search wxGTK
nach Allem suchst, was mit wxGTK zu tun hat. Aber wenn Python 2.5 auf deinem System der Standard ist, dann bleibe um himmelswillen bei Python 2.5. Versuche doch nicht deiner Distribution ein neues Python aufzuzwingen, wenn diese das nicht von selbst unterstützt. Außer du willst experimentieren.

Interessant: http://www.strippenstrolch.net/board/th ... &page=3#24

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
wuf
User
Beiträge: 1483
Registriert: Sonntag 8. Juni 2003, 09:50

Donnerstag 30. April 2009, 07:21

Hallo Leonidas & gerold

@Leonidas: Ich sehe du hast auch schon einige Erfahrung betreffs kompilieren und installieren von Sourcen hinter dir. Man bewegt sich da manchmal auf Glatteis. Ich werde in Zukunft deinen Rat befolgen und es zuerst mit einem Paketmanager versuchen.

@gerold: Es ist zypper search wxGTK. Übrigens dein Link ist sehr interessant! Habe bis jetzt noch nichts mit sudo und zypper unternommen. Du gabst mir den Anstoss mich näher damit zu beschäftigen. Ich habe auf meiner Platform Python2.5, Python2.6 und Python3.0 installiert. Dachte die wxPython-Installation könne man gezielt auf eine dieser Python-Versionen anwenden. Ähnlich wie bei der Installation einzelner Packete die man jeweils mittels Befehlszeile *pythonx.y setup.py install* in das Verzeichnis ....site_package der gewünschen Python-Version installiert.

OK. Vielen Dank zusammen!

Gruss wuf :wink:
Take it easy Mates!
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 30. April 2009, 08:31

wuf hat geschrieben:Dachte die wxPython-Installation könne man gezielt auf eine dieser Python-Versionen anwenden.
Nein, so einfach ist das nicht (das geht höchstens bei Source-Distributionen wie Gentoo oder Arch), denn die Pakete sind schon vorkompiliert auf eine bestimmte Python und wxWidgets-Version und man kann Pakete mit kompilierten C-Modulen für 2.5 nicht mit Python 2.6 nutzen.

Debian hat früher mehrere ``python2.x-paketname``-Packages bereitgestellt, die jeweils für verschiedene Python-Versionen ausgelegt waren und ist heute eher zu ``python-paketname`` übergegangen wo die kompilierten Binaries für alle mitgelieferten Python-Versionen drin sind. Ist sicherlich auch nicht optimal, aber als Alternative gibt es eben nur selbstkompilieren (was vom Aufwand geringer ist, aber ziemlich unsauber) oder das Nutzen einer Source-Distribution (weil dort der Paketmanager sich selbst um das kompilieren kümmert und man beim Kompilieren einige Dinge dann bestimmen kann).
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
wuf
User
Beiträge: 1483
Registriert: Sonntag 8. Juni 2003, 09:50

Freitag 1. Mai 2009, 18:17

Hallo Zusammen

@Leonidas: Danke für deine nützlichen Ausführungen

Ich habe noch mit wxGlade herumgespielt. Dabei wird folgende Exception ausgelöst:

Code: Alles auswählen

Traceback (most recent call last):
  File "wxglade.py", line 161, in <module>
    run_main()
  File "wxglade.py", line 148, in run_main
    import main
  File "/usr/lib/python2.5/site-packages/wxGlade-0.6.3/main.py", line 14, in <module>
    from widget_properties import *
  File "/usr/lib/python2.5/site-packages/wxGlade-0.6.3/widget_properties.py", line 625, in <module>
    class FileDialogProperty(DialogProperty):
  File "/usr/lib/python2.5/site-packages/wxGlade-0.6.3/widget_properties.py", line 647, in FileDialogProperty
    def __init__(self, owner, name, parent=None, wildcard=_("All Files|*"),
NameError: name '_' is not defined
Dabei scheint folgende Initialisierungs-Methode der Klasse FileDialogProperty das Problem zu verursachen:

Code: Alles auswählen

def __init__(self, owner, name, parent=None, wildcard=_("All Files|*"),
                 message=_("Choose a file"), can_disable=True, style=0, label=None):
Dabei fallen mir die folgenden Parameter-Zuweisungen in der Initialisierungs-Methode auf:

Code: Alles auswählen

wildcard=_("All Files|*")
message=_("Choose a file")
Scheinbar sind die führenden Unterstriche der in Klammern gesetzten Zeichenketten für den Python-Interpreter schwer verdaubar. Habe diese Art von Zeichenketten-Zuweisungen auch noch in den anderen Modul-Dateien von wxGlade festgestellt. Was könnte das sein?

Ich arbeite mit Python2.5

Gruss wuf :wink:
Take it easy Mates!
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 1. Mai 2009, 18:29

Das sind einfach Funktionsaufrufe der Funktion ``_``. Üblicherweise benutzt man das um Strings zu übersetzen. Nützlich etwa für gettext:

Code: Alles auswählen

import gettext
_ = gettext.ugettext
print _("Translatable string")
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
wuf
User
Beiträge: 1483
Registriert: Sonntag 8. Juni 2003, 09:50

Freitag 1. Mai 2009, 20:56

Hallo Leonidas

Danke für die Antwort. Der Auslöser der erwähnten Exception ist eine durch mich provozierte Massnahme. Beim herumspielen mit wxGlade (hier unter Linux SuSE 11.0 zeigte sich zuerst folgende Exception:

Code: Alles auswählen

Traceback (most recent call last):
  File "wxglade.py", line 12, in <module>
    t = gettext.translation(domain="wxglade", localedir="locale", fallback=True)
  File "/usr/lib/python2.5/gettext.py", line 478, in translation
    t = _translations.setdefault(key, class_(open(mofile, 'rb')))
  File "/usr/lib/python2.5/gettext.py", line 180, in __init__
    self._parse(fp)
  File "/usr/lib/python2.5/gettext.py", line 337, in _parse
    tmsg = unicode(tmsg, self._charset)
LookupError: unknown encoding: CHARSET
Ich stellte fest dass das gettext-Modul irgendwie Probleme mit dem Encoding hatte. Dann habe ich folgende Zeilen in der wxglade.py unwirksam gemacht:

Code: Alles auswählen

t = gettext.translation(domain="wxglade", localedir="locale", fallback=True)
t.install("wxglade")
Erst dann wurde die erwähnte Exception ausgelöst (verusacht durch meinen Eingriff in der wxglade.py)

Nun fand ich in unserem Forum einen Thread der sich mit dem gleichen Problem befasst.
http://www.python-forum.de/post-84573.html#84573

Durch weiteres suchen im Web stellte ich fest, dass sich auch noch andere mit diesem Problem herumschlagen und stosste auf einen Lösungsansatz (in französisch) ohne die in unserem Forum-Thread erwähnte Installation von SPE.

Lösen kann man dieses Problem mit ändern der Umgebungsvariable *LANG*
http://flozix.com/wordpress/?p=22

Code: Alles auswählen

export LANG=C
oder

Code: Alles auswählen

export LANG=POSIX 
Gruss wuf :wink:
Take it easy Mates!
Antworten