[OpenSlides users-de] Neue Portable App

Andy Kittner andy.kittner at gmail.com
So Mär 20 21:15:31 CET 2016


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

On 19/03/16 22:18, Stefan Frauenknecht wrote:
> Hallo Leute,
> 
> ich kümmere mich gerade um die Portable App, zunächst um die OS X Version. Hehres Ziel ist es ja aus den Code eine App mit py2app (https://pythonhosted.org/py2app/) für den Mac und mit py2exe für Windows zu bauen zu können. Allerdings gibt es mit py2app zwei Probleme:
> 
> 1. py2app kommt (noch) nicht mit wxPython-Phoenix klar.
> Um das zu umschiffen habe ich openslides-gui mit tkinter neu gebaut. Das war einfach. War ja auch nicht viel zu migrieren.
> 
> 2. py2app kommt nicht mit unseren Aufrufen an openslides klar.
> D.h. um z.B. den Server zu starten wird python -u -m openslides start 0.0.0.0:8000 in einem Subprozess ausgeführt. Das ist eigentlich super gelöst, funktioniert aber leider in der gebauten App nicht. py2app kann das einfach nicht (Stichwort runpy). Nun hatte ich eine einfache Idee, die leider auch nicht funktioniert: Ich habe versucht das Skript, also openslides.__main__.py, direkt aufzurufen, dabei den Subprozess mit PYTHONPATH und PYTHONHOME richtig konfiguriert. Ich bin mir noch nicht sicher, ob es so lösbar ist. PYTHONPATH muss ja auf das site-packages enthalten. Nur wo ist das in der gebauten App?
py2exe und cx_Freeze bauen IIRC beide ein library.zip mit allen
"benötigten"[1] Modulen, je noch konfiguration wird das evtl noch als Datenblob an
die .exe dran gehängt. Um den PYTHONPATH davon muss man sich aber nicht
selbst kümmern, die wrapper.exe die diese Tools generieren sollte das
alles schon korrekt einstellen. Ich würde vermuten das py2app das
ähnlich macht.

```import openslides.__main__``` sollte also prinzipiell einfach so gehen.
Falls nicht müsstest du mal den genauen Fehler den du bekommst posten.
Ich könnte mir aber vorstellen das entweder eine Abhängikeit fehlt (siehe [1]), oder
nicht damit klar kommt wenn sie in nem library zip ist[2].


[1] Sie suchen im prinzip alle import statements zusammen und bauen so
eine Liste von benötigten Modulen, speziell wenn dinge erst zur
Laufzeitimportiert dynamisch importiert werden fehlt aber immer mal was.
Es sollte da aber Optionen geben mit denen du das bundeln erzwingen/ 
bzw. auch verhindern kannst.


[2] Das war IIRC auch einer der Gründe warum wir damals kein py2exe/cx_Freeze für die
Windows-portable genommen haben, django mochte das nicht so wirklich (da
wurde ziemlich viel auf Basis von __file__ gesucht, und erwartet das das
ein normaler Dateipfad ist).
Wenn das das Problem ist könntest du versuchen django von der Liste der
benötigten Module auszuschließen und statt dessen so ins Filesystem zu
legen. Anschließend dann in deinem Main-Modul sys.path passend
manipulieren. Oder aber, was noch besser wäre, du findest eine Option 
die die ganzen Python-Module gleich plain ins FS legt.


Gruß,
Andy
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQIcBAEBCgAGBQJW7wTeAAoJED4ymUd/KFGwYIkP/isM+KZ/sVKqpDtd5+QXYYjC
edNcp5hC+ui6TydTSYilGtHnlSIzTELTQOZ6hO4V9xKZjEu5Y32dz0yb1osHkcos
3I6me3zZABi4Mhgj1aRXj5zTEfww3fE2i81c2gbdk2+9PwjdREF5lwwI9TkstBJ2
etGxiR/QsC477G0aP7HVEjrDVVTzKJE6tka2msW2r9KSgH7NHl7qdURNOtui+8X3
kMnzxlIXVOAMNaWaaZkfwTlCQEVC06jAklw4IkzifhGVZy+oxknzKvh6rdsIMnQo
msAAY1OiScXeZiu0BLeaf/QL8T3mD5slNNhTUas/U2TNHgG1vqDYhsKKqhp00bbW
RAX//2nbrUFTK1tspu9UtE8IEdGTzkvIWGmK52n7IvI2DDGs9sqdpBFA5ku0qFUz
wW/WeDp1SMy41t0Et7JvAnQ9VK0oMXgTk475puUJPTI7F3hXH386LpRIl+7IeJOr
kejpLvrl3My+mwXGt1UR/iEm2EbFAkIBPVW+Lk2H1o3tgsODJ6739TrJ9NBGLRu2
vaMG5+gu/hUc8vG9cxSb45V1vREZptuH8mGbbCUQhJ6XvYBuliAVqApvNOZX7E6e
YBgW4HFozMfQZvnWgJwmbY6+0gNJWXo7QJAu+eoyRKInQ2aPJH120CdYhmi2gKVc
gbgjxUmJPh5egUnt79lH
=7Xk3
-----END PGP SIGNATURE-----


More information about the users-de mailing list