2016-03-29 21 views
1

wxPython kullanarak GUI ile bir uygulama yazıyorum. CentOS 7 ile iki makinem var. İlki bir inşaat makinesi ve diğeri temiz. Yapı makinesi mantıksal olarak kaynak derleme için her şeyi kurdu. Uygulamamın herhangi bir CentOS 7 makinesinde herhangi bir bağımlılık olmadan çalışacağını görmek istiyorum. Yani, işte problem.Pyinstaller - komut dosyasını tamamen bağımsız olarak derleyemiyor

Kaynak derleme ince bitirir, ama temiz makinede ikili çalıştırmayı denediğinizde, ben başlangıçta aşağıdaki hatayı alıyorum:

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 

Benim özellik dosyası şöyle görünür:

# -*- 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 

Not: yum update'u temiz makinede çalıştırdığımda her şey yolunda gidiyor, ancak sistem kitaplıklarında tamamen bağımsız olmasını istiyorum. Dolayısıyla, kullanıcının bir şeyi güncellemesi veya yüklememesi gerekmemelidir. Bu bağımlılığı uygulamanın kendisinde nasıl 'paketleyeceğimi' arıyorum, ama hangisini bilmiyorum.

Bunu nasıl çözebiliriz? teşekkür ederiz

Düzenleme: Büyük olasılıkla bu libxcb kütüphane eksik/eski kaynaklanır, ancak yine de ikili içine paket nasıl hiçbir fikrim yok.

cevap

1

Son zamanlarda aynı problemle karşılaştım.

Pyinstaller libxcb kitaplıklarını dışlar. Kontrol PyInstaller// dylib.py bağlıdır - orada bulacaksınız:

libxcb sık ABI değiştirir Ubuntu LTS bültenleri arasında: (örn: Ubuntu LTS serbest bırakır arasında) ve olan libxcb dri (örneğin sık ABI değiştirir) ve genellikle grafik yığınının bağımlılığı olarak yüklenir. Paketlemeye gerek yok.

... ya bu henüz pyinstaller içine vermiş değil, hangi taahhüt kontrol edin: kaldırmak için https://github.com/pyinstaller/pyinstaller/commit/4a6d74a13122b763e99f97995fbbb1c6967769bb

Try "r '/ libxcb.so .. *': 1," PyInstaller içinde// dylib.py bağlıdır.

İlgili konular