*.py-Datei ausführen unter Linux Mint 'Sarah'

Plattformunabhängige GUIs mit wxWidgets.
Antworten
TigerEnte
User
Beiträge: 6
Registriert: Sonntag 26. April 2015, 11:56

Hallo,

ich bin kein Python-Programmierer, war aber bisher durchaus in der Lage per Google entsprechende Probleme zu lösen. Ich habe hier das Programm "AvxPmod" (ein Editor für AviSynth [https://de.wikipedia.org/wiki/AviSynth] unter Windows). AviSynth selber läuft per Wine unter Linux gut, AvsPmod stürzt manchmal ab wenn die Skripte zu komplex werden. Unter Kubuntu konnte ich AvsPmod starten indem ich

Code: Alles auswählen

python avsp.py
ausgeführt habe - das lief absolut stabil. Ich musste dazu lediglich das Paket 'python-wxgtk2.8' installieren. Jetzt unter Mint geht das nicht mehr. Ich bekomme immer die Meldung. Ich habe Python 2.7 installiert. Sagt einem diese Meldung etwas?

Code: Alles auswählen

python avsp.py
Using AvxSynth from LD_LIBRARY_PATH
Traceback (most recent call last):
  File "avsp.py", line 18066, in <module>
    main()
  File "avsp.py", line 18060, in main
    app = MainApp(redirect_flag)
  File "/usr/lib/python2.7/dist-packages/wx-3.0-gtk2/wx/_core.py", line 8628, in __init__
    self._BootstrapApp()
  File "/usr/lib/python2.7/dist-packages/wx-3.0-gtk2/wx/_core.py", line 8196, in _BootstrapApp
    return _core_.PyApp__BootstrapApp(*args, **kwargs)
  File "avsp.py", line 18047, in OnInit
    self.frame = MainFrame()
  File "avsp.py", line 5263, in __init__
    self.createWindowElements()
  File "avsp.py", line 6751, in createWindowElements
    scriptWindow = self.createScriptWindow()
  File "avsp.py", line 7584, in createScriptWindow
    scriptWindow = AvsStyledTextCtrl(self.scriptNotebook, self, style=wx.STATIC_BORDER,
  File "avsp.py", line 158, in __init__
    self.SetUserOptions()
  File "avsp.py", line 272, in SetUserOptions
    self.RegisterImage(5, wx.ArtProvider.GetBitmap(wx.ART_FOLDER))
  File "/usr/lib/python2.7/dist-packages/wx-3.0-gtk2/wx/stc.py", line 3209, in RegisterImage
    return _stc.StyledTextCtrl_RegisterImage(*args, **kwargs)
wx._core.PyAssertionError: C++ assertion "(bitmap.GetWidth() >= m_width && bitmap.GetHeight() == m_height) || (m_width == 0 && m_height == 0)" failed at ../src/generic/imaglist.cpp(66) in Add(): invalid bitmap size in wxImageList: this might work on this platform but definitely won't under Windows.
BlackJack

@TigerEnte: Gibt es `python-wxgtk2.8` nicht mehr? Ansonsten wäre das eher eine Frage für die Entwickler von dem Programm. Insbesondere ob die das mit wxPython 3.0 getestet haben oder ob das zwingend 2.8 benötigt.
TigerEnte
User
Beiträge: 6
Registriert: Sonntag 26. April 2015, 11:56

Doch, gibt es noch und ich hab es auch installiert. Auch die 3.0 ins installiert. Wie gesagt, unter Kubuntu klappte es mit dem Paket python-wxgtk2.8.

Es gibt hier keine aktive Entwicklung mehr. Die letzte Version ist von 2013. Ich bin auch nur durch Zufall auf die Möglichkeit mit der avsp.py in einem Beitrag im Doom9-Forum gestoßen.
BlackJack

@TigerEnte: Beide Pakete würden ein Python-Package mit dem Namen `wx` installieren, die sollte man nicht parallel installieren können dürfen. Bei wxPython 2.x gab es eine Möglichkeit mehrere Versionen nebeneinander zu installieren und mit Hilfe des `wxversion`-Modul zu wählen was als `wx` importiert werden soll. Das wurde bei wxPython 3 aber abgeschafft, und stattdessen werden virtuelle Umgebungen empfohlen statt es systemweit zu installieren.
TigerEnte
User
Beiträge: 6
Registriert: Sonntag 26. April 2015, 11:56

Das hier gibt dpkg -l *wx* aus (Ausschnitt):

Code: Alles auswählen

ii  python-wxgtk2.8         2.8.12.1+dfsg2-2 amd64            wxWidgets Cross-platform C++ GUI toolkit (wxPython 
ii  python-wxgtk3.0         3.0.2.0+dfsg-1bu amd64            Python interface to the wxWidgets Cross-platform C+
ii  python-wxversion        3.0.2.0+dfsg-1bu all              API for selecting the wxPython version to use
Demnach sind beide installiert. Ich habe beide mal deinstalliert und einzeln wieder installiert (so das beide nicht gleichzeitig installiert waren) und neu getestet. Bei der 3.0 kam wieder die Fehlermeldung, bei der 2.8 aber nicht. Bei der Installation der 2.8 wurde auch komplett neu heruntergeladen, wohingegen bei der 3.0 ja nur das schon geladenen DEB-Paket installiert werden muss. Ich vermute mal ich hatte vorher nicht das richtige 2.8-Paket installiert.

Auf jeden Fall startet jetzt AvsPmod wie es soll.
TigerEnte
User
Beiträge: 6
Registriert: Sonntag 26. April 2015, 11:56

Scheint doch nicht zu gehen. Es geht immer nur nachdem ich python-wxgtk2.8 installiert habe. Ein zweiter Start von AvsPmod geht dann nicht mehr. Es kommt dieser Fehler:

Code: Alles auswählen

python avsp.py
Using AvxSynth from LD_LIBRARY_PATH
Traceback (most recent call last):
  File "avsp.py", line 18066, in <module>
    main()
  File "avsp.py", line 18060, in main
    app = MainApp(redirect_flag)
  File "/usr/lib/python2.7/dist-packages/wx-2.8-gtk2-unicode/wx/_core.py", line 7981, in __init__
    self._BootstrapApp()
  File "/usr/lib/python2.7/dist-packages/wx-2.8-gtk2-unicode/wx/_core.py", line 7555, in _BootstrapApp
    return _core_.PyApp__BootstrapApp(*args, **kwargs)
  File "avsp.py", line 18047, in OnInit
    self.frame = MainFrame()
  File "avsp.py", line 5089, in __init__
    translation = __import__('translation_' + self.options['lang'])
TypeError: cannot concatenate 'str' and 'NoneType' objects
Ich verstehe die Fehlermeldung nicht. Da ist aber von Python2.7 die Rede und ich habe ein Python-Modul in der Version 2.8 installiert. Ist das ein Problem?
BlackJack

@TigerEnte: 2.7 ist die Version von Python und 2.8 ist die Version vom `wxPython`-Package. Das eine hat nichts mit dem anderen zu tun.

Hier scheint die Sprache als Option nicht gesetzt zu sein. Wie auch immer der Wert von self.options zustande kommt, da sollte ein 'lang'-Schlüssel enthalten sein der nicht `None` als Wert liefert.
Antworten