PyInstaller создал отл. не работает на виртуальном боксе с ubuntu

Я использовал PyInstaller для создания исполняемого файла из сценария графического интерфейса, который я написал (используя wx.python), используя эту команду...

   python /home/torosean/pyinstaller/pyinstaller.py -F -w My_GUI_login_simplified.py

Я могу запустить исполняемый файл на главном компьютере без каких-либо проблем, перейдя в папку dist и запустив...

 ./My_GUI_login_simplified

Теперь, когда я тестирую исполняемый файл в Ubuntu (используя виртуальную коробку), я получаю сообщение об ошибке, показанное ниже. Я хотел бы протестировать исполняемый файл на нескольких ОС, прежде чем передать его своим коллегам, желательно на Ubuntu, а затем снова на Mac в vb. В любом случае здесь ошибка.

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/home/torosean/pyinstaller/PyInstaller/loader/pyi_importers.py", line 270, in load_module
  File "/home/torosean/Documents/python_funcs/uploader/build/My_GUI_login_simplified/out00-PYZ.pyz/wx", line 45, in <module>
  File "/home/torosean/pyinstaller/PyInstaller/loader/pyi_importers.py", line 270, in load_module
  File "/home/torosean/Documents/python_funcs/uploader/build/My_GUI_login_simplified/out00-PYZ.pyz/wx._core", line 4, in <module>
  File "/home/torosean/pyinstaller/PyInstaller/loader/pyi_importers.py", line 409, in load_module
ImportError: /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1: undefined symbol: _glapi_tls_Dispatch

Теперь мои вопросы?

1). Это проблема, связанная с тем, как PyInstaller компилирует скрипт в исполняемый файл. Другими словами, из показанной ошибки можно сказать, что пошло не так, если что-то пошло не так с PyInstaller, выполняющим команду exec. (Я лично не «чувствую», что это так, но я не знаю наверняка)?

2). Is this a virtual box/ubuntu problem? Any suggestions on how to fix it, so far i haven't found anything useful.

3). for people who create executables from python scripts, how do you go about testing the executable, do you use virtual machines or is there something better out there?

Любые предложения будут высоко оценены. ХАРАКТЕРИСТИКИ: хост ОС (Fedora 18 64 бит) гостевая ОС (ubuntu 12.04 LTS 64 бит) виртуальная машина: виртуальная коробка (4.2.12) python 2.7.3

Всем спасибо Модератору: Извините, если этот вопрос не здесь, я подумал, что если PyInstaller делает что-то, что вызывает эту ошибку, кому-то еще может быть полезно узнать об этом.

РЕДАКТИРОВАТЬ: Тот же результат с OpenSUSE на vb.... РЕДАКТИРОВАТЬ: Сделал три вещи, и это сработало... 1).Установил виртуальный бокс с веб-сайта оракулов. 2). Выполнил обновление, и все, казалось, волшебным образом заработало!


person Sason Torosean    schedule 06.05.2013    source источник


Ответы (1)


Я могу дать вам половину ответа...

Это происходит, когда приложение, которое вы пишете, зависит от libGL, но pyinstaller не включил его, когда упаковывал «двоичный файл».

В файле «spec» pyinstaller вам необходимо определить дополнительные библиотеки и добавить их в список двоичных файлов, которые возвращаются на этапе анализа. В своем приложении я сделал следующее:

additionalLibs = [] 
additionalLibs.append( ("libGL.so.1", "/usr/lib64/libGL.so.1", 'BINARY') )

# yada yada

a = Analysis(['myApp.py'],
             pathex=['/path/to/myAppDir'],
             hiddenimports=[],
             hookspath=None)
pyz = PYZ(a.pure)
exe = EXE(pyz,
          a.scripts,
          a.binaries + additionalLibs,
          a.zipfiles,
          a.datas,
          name=os.path.join('dist', 'myApp'),
          icon="myApp.ico",
          debug=False,
          strip=None,
          upx=True,
          console=console )

Затем libGL будет включен в ваш упакованный двоичный файл, что прекрасно работает на всех системах, в которых либо нет libGL.so.1, либо есть совместимый libGL.so.1. В системах с несовместимым libGL.so.1 (что может быть в случае, если ваша система обновлена, а целевая система — нет, или наоборот), вы получите аналогичную ошибку... следовательно, «половина Ответ"

Я пытался найти ответ на другую половину (чтобы он всегда работал), когда нашел ваш вопрос.

person Brian K    schedule 15.07.2013