Pynotify работает нормально в интерактивном режиме, но вылетает при программном запуске (в Fedora 13)
Я пытаюсь использовать pynotify для небольшого проекта, но у меня странная проблема на моей машине Fedora 13. Похоже, что когда Pynotify запускается программно, он падает, когда show()
называется - однако, если я наберу эту строку сам, она работает нормально! Я также проверил его на своем Ubuntu box, где он работает абсолютно нормально.
Мой тестовый код:
import pynotify
pynotify.init('someName')
n = pynotify.Notification("Summary", "Body")
n.show()
И результаты запуска это:
$ python -i test.py
Traceback (most recent call last):
File "test.py", line 5, in <module>
n.show()
glib.GError: Unable to connect to server
>>> n.show()
True
>>>
Итак, есть ли у кого-нибудь идеи, что может вызвать такое поведение? К сожалению, среда Fedora находится под моим контролем, поэтому любые решения, требующие root-доступа и т. Д., На самом деле не будут работать. Я могу попробовать установить pynotify локально, однако, если это необходимо. Спасибо за любую помощь.
1 ответ
Поскольку Оуэн не принял мое предложение принять этот ответ, вот решение, которое сработало для меня. Обратите внимание, что я понятия не имею, почему это работает (кроме смутных догадок), и что я не даю никаких гарантий относительно того, является ли это хорошим решением или нет, но, возможно, если вы когда-либо находились в столь же странном положении, как я было это поможет
Если вы выполните n.show()
дважды, он будет успешно запущен во второй раз. Поэтому, чтобы избежать установки двух уведомлений в системе, где Pynotify работает правильно, я использовал следующее:
import pynotify
pynotify.init('someName')
n = pynotify.Notification("Summary", "Body")
try:
n.show()
except:
n.show()
Обратите внимание, что в этом небольшом примере есть недостатки, и наименьший из всех результатов, если есть реальная проблема с Pynotify, которая будет возникать на обоих n.show()
s - это всего лишь минимальный рабочий пример.