2016-03-29 14 views
1

Ich schreibe eine Anwendung mit GUI mit wxPython. Ich habe zwei Maschinen mit CentOS 7. Die erste ist eine Build-Maschine und die andere ist sauber. Die Erstellungsmaschine hat logisch alles für die Quellkompilierung installiert. Ich möchte erreichen, dass meine Anwendung auf jeder CentOS 7 Maschine ohne Abhängigkeiten läuft. Also, hier ist das Problem.Pyinstaller - Skript kann nicht vollständig kompiliert werden

Quelle Kompilation beendet in Ordnung, aber wenn ich versuche, die binären auf der sauberen Maschine laufen zu lassen, erhalte ich die folgende Fehlermeldung beim Start:

# -*- mode: python -*- 

block_cipher = None 

a = Analysis(['main.py'], 
      pathex=['/home/user/gui'], 
      binaries=None, 
      datas=[('images/icon.png', 'images'), ('images/logo.png', 'images'), ('images/head.jpg', 'images'), ('images/step_background.png', 'images')], 
      hiddenimports=[], 
      hookspath=[], 
      runtime_hooks=[], 
      excludes=[], 
      win_no_prefer_redirects=False, 
      win_private_assemblies=False, 
      cipher=block_cipher) 

pyz = PYZ(a.pure, a.zipped_data, 
      cipher=block_cipher) 
exe = EXE(pyz, 
      a.scripts, 
      a.binaries, 
      a.zipfiles, 
      a.datas, 
      name='gui', 
      debug=False, 
      strip=False, 
      upx=True, 
      console=True) # Only for debug 
:

Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
    File "/usr/lib/python2.7/site-packages/PyInstaller/loader/pyimod03_importers.py", line 389, in load_module 
    File "gui.py", line 12, in <module> 
    File "/usr/lib/python2.7/site-packages/PyInstaller/loader/pyimod03_importers.py", line 389, in load_module 
    File "site-packages/wx-2.8-gtk2-unicode/wx/__init__.py", line 45, in <module> 
    File "/usr/lib/python2.7/site-packages/PyInstaller/loader/pyimod03_importers.py", line 389, in load_module 
    File "site-packages/wx-2.8-gtk2-unicode/wx/_core.py", line 4, in <module> 
    File "/usr/lib/python2.7/site-packages/PyInstaller/loader/pyimod03_importers.py", line 546, in load_module 
ImportError: /tmp/_MEI6Ni7CP/libX11.so.6: undefined symbol: xcb_poll_for_reply64 
main returned -1 

wie Meine Spec-Datei aussieht

Hinweis: Wenn ich yum update auf der sauberen Maschine ausführen, dann läuft alles gut, aber ich will es völlig unabhängig auf Systembibliotheken. Daher sollte der Benutzer nichts aktualisieren oder installieren müssen. Ich suche nach einem Weg, wie ich diese Abhängigkeit in die Anwendung selbst "bündeln" kann, aber ich weiß nicht welche/wie.

Gibt es eine Möglichkeit, dies zu lösen? Danke

Edit: Wahrscheinlich dieses durch alte verursacht/libxcb Bibliothek fehlt, aber ich habe noch keine Ahnung, wie es in binären zu bündeln.

Antwort

1

Ich stieß in letzter Zeit auf das gleiche Problem.

Pyinstaller schließt die libxcb-Bibliotheken aus. prüfen PyInstaller/abhängen/dylib.py - dort finden Sie:

libxcb ändert sich häufig ABI (zB: zwischen Ubuntu LTS veröffentlicht) und ist libxcb-dri ändert ABI häufig (zB: zwischen Ubuntu LTS Meldungen) und wird normalerweise als Abhängigkeit des Grafikstapels installiert. Keine Notwendigkeit, es zu bündeln.

... oder überprüfen Sie diese verpflichten, die es in pyinstaller noch nicht gemacht hat: https://github.com/pyinstaller/pyinstaller/commit/4a6d74a13122b763e99f97995fbbb1c6967769bb

Versuchen zu entfernen "r '/ libxcb.so .. *': 1", in PyInstaller/abhängen/dylib.py.

Verwandte Themen