Исполняемый файл, созданный в CentOS, не работает в Ubuntu

Я разработал приложение pygtk. Теперь мне нужно развернуть его на клиентской машине.

Поэтому я создал исполняемый файл с помощью PyInstaller на компьютере с CentOS 5 (поскольку Pyinstaller зависит от glibc, а для выбора нижнего уровня glibc я использовал CentOS 5).

Теперь, когда я пытаюсь запустить приложение на машине Ubuntu11.04, оно загружает приложение, но вместо текста показывает квадратные поля в графическом интерфейсе.

И следующие сообщения об ошибках печатаются в командной строке.

Gtk-Message: Failed to load module "canberra-gtk-module": libcanberra-gtk-module.so: cannot open shared object file: No such file or directory
/tmp/_MEIwDbvRA/User.py:88: GtkWarning: Cannot open pixbuf loader module file '/home/arrowdevices/pda/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache': No such file or directory
/tmp/_MEIwDbvRA/User.py:94: GtkWarning: Cannot open pixbuf loader module file '/home/arrowdevices/pda/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache': No such file or directory
/tmp/_MEIwDbvRA/User.py:100: GtkWarning: Cannot open pixbuf loader module file '/home/arrowdevices/pda/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache': No such file or directory
/tmp/_MEIwDbvRA/User.py:114: GtkWarning: Cannot open pixbuf loader module file '/home/arrowdevices/pda/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache': No such file or directory
/tmp/_MEIwDbvRA/User.py:120: GtkWarning: Cannot open pixbuf loader module file '/home/arrowdevices/pda/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache': No such file or directory
/tmp/_MEIwDbvRA/User.py:130: GtkWarning: Cannot open pixbuf loader module file '/home/arrowdevices/pda/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache': No such file or directory
/tmp/_MEIwDbvRA/User.py:140: GtkWarning: Cannot open pixbuf loader module file '/home/arrowdevices/pda/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache': No such file or directory
/tmp/_MEIwDbvRA/User.py:197: PangoWarning: No modules found:
No builtin or dynamically loaded modules were found.
PangoFc will not work correctly.
This probably means there was an error in the creation of:
  '/home/arrowdevices/pda/etc/pango/pango.modules'
You should create this file by running:
  pango-querymodules > '/home/arrowdevices/pda/etc/pango/pango.modules'
Fontconfig warning: "/etc/fonts/conf.d/11-lcd-filter-lcddefault.conf", line 9: invalid constant used : lcddefault
Fontconfig warning: "/etc/fonts/conf.d/53-monospace-lcd-filter.conf", line 17: invalid constant used : lcdlegacy
/tmp/_MEIwDbvRA/User.py:197: PangoWarning: failed to find shape engine, expect ugly output. engine-type='PangoRenderFc', script='latin'
/tmp/_MEIwDbvRA/User.py:197: PangoWarning: failed to find shape engine, expect ugly output. engine-type='PangoRenderFc', script='common'
/tmp/_MEIwDbvRA/User.py:197: GtkWarning: Cannot open pixbuf loader module file '/home/arrowdevices/pda/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache': No such file or directory

Мои вопросы:

  1. Как я могу аккуратно упаковать значки и шрифты в исполняемый файл, созданный PyInstaller?
  2. Pyinstaller, похоже, жестко прописывает пути к исполняемому файлу. Как мы можем этого избежать?

person user2109788    schedule 15.04.2014    source источник


Ответы (1)


Я бы искал бинарный файл Ubuntu. CentOS и Ubuntu — это очень, очень разные системы. Структура каталога может быть разной.

person Over Killer    schedule 15.04.2014
comment
Привет, @over-killer, я изменил вопросы, пожалуйста, посмотри. Мне нужно аккуратно упаковать значки и шрифты с помощью pyinstaller. Думаю тогда не должно быть разницы между Ubuntu и CentOS - person user2109788; 15.04.2014
comment
Хорошо. Установите файлы разработки GTK+. Установите также PangoFC. Интересно, чтобы это работало. Почему Вы думаете, что между Ubuntu и CentOS нет различий? Ubuntu основан на Debian, а CentOS — на RHEL. Они используют разные менеджеры пакетов, и структура каталогов отличается. - person Over Killer; 15.04.2014
comment
Привет, я установил тот же Centos 5 на другой компьютер и протестировал свое приложение, но оно выдает ту же ошибку. Любая идея, почему? - person user2109788; 16.04.2014
comment
Вы установили все dev-библиотеки, упомянутые выше? - person Over Killer; 16.04.2014
comment
эй, я скомпилировал все исходники (необходимые для gtk, pygtk, включая pango и cairo) в локальный каталог и запустил pyinstaller. Отдельно пакета для pangoFC не нашел, как его установить? - person user2109788; 16.04.2014
comment
Здесь: ссылка. Скачайте исходники (или пакет) и установите его. - person Over Killer; 16.04.2014
comment
Как я уже сказал в предыдущем комментарии, я установил pango и cairo, но все равно получаю сообщение об ошибке. Является ли pangoFC другим пакетом? ссылка, которую вы отправили, не содержит исходников/пакетов. - person user2109788; 16.04.2014
comment
Ах, извините. Я думал, что pangoFC относится к пакету pango. Я не знаю теперь, как вам помочь. Извини :( - person Over Killer; 16.04.2014
comment
Эй, теперь я знаю, как запустить приложение на клиентской машине. Я скопировал файлы pango.modules и loader.cache в место клиента (я вручную создал путь /home/arrowdevices/pda и скопировал файлы), и теперь он работает нормально. У вас есть идеи, как настроить pango ModulesPath, чтобы я мог размещать pango.modules в любом месте системы? - person user2109788; 28.04.2014