Приложение не запускается после установки. Запуск & ldquo; быстро запустить & rdquo; работает отлично

Я сделал свою заявку на Ubuntu App Showdown. Когда я запускаю его из терминала, используя quickly run, он работает хорошо. Я упаковал его с quickly package и установил локально. К сожалению, это не начинается. Я думаю, что это проблема со ссылками на css-файл внутри моего кода на python, но я не знаю, как мне правильно ссылаться, поэтому он будет работать после установки. Вывод из терминала при запуске установленного приложения:

michal@michal-Inspiron-530-11:~$ easy-stopwatch
/usr/lib/python2.7/dist-packages/gi/overrides/Gtk.py:391: Warning: g_object_set_property: construct property "type" for object `Window' can't be set after construction
  Gtk.Window.__init__(self, type=type, **kwds)

(easy-stopwatch:10446): Gtk-CRITICAL **: gtk_css_section_get_file: assertion `section != NULL' failed

(easy-stopwatch:10446): Gtk-CRITICAL **: gtk_css_section_get_end_position: assertion `section != NULL' failed

(easy-stopwatch:10446): Gtk-CRITICAL **: gtk_css_section_get_end_line: assertion `section != NULL' failed
Traceback (most recent call last):
  File "/usr/bin/easy-stopwatch", line 33, in <module>
    easy_stopwatch.main()
  File "/usr/lib/python2.7/dist-packages/easy_stopwatch/__init__.py", line 33, in main
    window = EasyStopwatchWindow.EasyStopwatchWindow()
  File "/usr/lib/python2.7/dist-packages/easy_stopwatch_lib/Window.py", line 35, in __new__
    new_object.finish_initializing(builder)
  File "/usr/lib/python2.7/dist-packages/easy_stopwatch/EasyStopwatchWindow.py", line 56, in finish_initializing
    css_provider.load_from_path('data/ui/gtk-style.css')
  File "/usr/lib/python2.7/dist-packages/gi/types.py", line 43, in function
    return info.invoke(*args, **kwargs)
gi._glib.GError: <unknown>:1:0: Failed to import: Error opening file: No such file or directory
michal@michal-Inspiron-530-11:~$ 

Часть моего кода на Python:

    # Styling via CSS file
    screen = Gdk.Screen.get_default()
    css_provider = Gtk.CssProvider()
    css_provider.load_from_path('data/ui/gtk-style.css')
    style_context = Gtk.StyleContext()
    style_context.add_provider_for_screen(screen, css_provider, Gtk.STYLE_PROVIDER_PRIORITY_USER)

------------- EDIT ---- ------------

После некоторых поисков я понял, что quickly package не делает приложение для установки в /opt, а quickly package --extras делает. После установки в /opt я отредактировал свой файл python, чтобы ссылка на файл css выглядела следующим образом:

css_provider.load_from_path('/opt/extras.ubuntu.com/easy-stopwatch/share/easy-stopwatch/ui/gtk-style.css')

После этого мое приложение работает. Я не уверен, смогу ли я сделать это в коде, который я хотел бы представить в Ubuntu App Showdown.

2
задан 4 July 2012 в 22:23

1 ответ

Не указывайте путь в следующем вызове, используйте универсальную функцию для загрузки медиа-файлов. Это позволит вам правильно загрузить файл во время разработки или в установленной системе.

Таким образом, вместо этого:

css_provider.load_from_path('/opt/extras.ubuntu.com/easy-stopwatch/share/easy-stopwatch/ui/gtk-style.css')

Сделайте что-то вроде этого:

from foo_lib.helpers import get_media_file

css_provider.load_from_path(get_media_file('gtk-style.css'))
0
ответ дан 4 July 2012 в 22:23

Другие вопросы по тегам:

Похожие вопросы: