python ete3 – сбой при создании pdf после предупреждения Gtk

Я столкнулся с проблемой, по которой не нашел никакой полезной информации. Я использую ete3 в python для автоматизации создания филогенетических древовидных фигур. Я написал некоторый код, который прекрасно работает, если я выполняю его в своей записной книжке ipython.

Однако, когда я запускаю его в терминале через python script.py, я получаю следующее предупреждающее сообщение:

GLib-GIO-Message: Using the 'memory' GSettings backend.  Your settings will not be saved or shared with other applications.

(python:7657): Gtk-WARNING **: GModule (/usr/lib/x86_64-linux-gnu/gtk-2.0/2.10.0/immodules/im-ibus.so) initialization check failed: GLib version too old (micro mismatch)

(python:7657): Gtk-WARNING **: Loading IM context type 'ibus' failed

(python:7657): Gtk-WARNING **: GModule (/usr/lib/x86_64-linux-gnu/gtk-2.0/2.10.0/immodules/im-ibus.so) initialization check failed: GLib version too old (micro mismatch)

(python:7657): Gtk-WARNING **: Loading IM context type 'ibus' failed

(python:7657): Gtk-WARNING **: GModule (/usr/lib/x86_64-linux-gnu/gtk-2.0/2.10.0/immodules/im-ibus.so) initialization check failed: GLib version too old (micro mismatch)

(python:7657): Gtk-WARNING **: Loading IM context type 'ibus' failed

После появления предупреждения код просто зависает и не создает фигуру. Я уже пробовал обновлять библиотеку glib, но не помогло.

Код, который я использую:

def my_layout(node):
    F = TextFace(node.name, tight_text=True)
    add_face_to_node(F, node, column=0, position="branch-top")
    if node.is_leaf():
        seq_face = SeqMotifFace(node.sequence, seqtype='nt', seq_format='compactseq')
        add_face_to_node(seq_face, node, column=0, position='aligned')

def phylo_with_alignment(tree, alignment, out_dir, out_format):
    t2=PhyloTree(tree, alignment)
    t2.link_to_alignment(alignment=alignment, alg_format='fasta')
    ts2=TreeStyle()
    ts2.show_leaf_name=False
    ts2.layout_fn=my_layout
    print 'trying to render...'
    t2.render(out_dir.rstrip('/')+'/'+os.path.basename(tree)+'phylo_aln.'+out_format, tree_style=ts2)
    print 'Done!'

try:
    parse_fasta(args.alignment)
    phylo_with_alignment(tree, alignment, args.out_dir, args.out_format)
    print 'Tataaaa, phylogeny with alignment created and saved to %s!' % out_dir
except Exception, e:
    print 'EXCEPTION: %s, line %s' % (e, sys.exc_info()[-1].tb_lineno)
    sys.exit()

Цель здесь состоит в том, чтобы создать фигуру и сохранить ее в out_dir. Ошибка возникает, когда я звоню t2.render(), до этого все идет гладко.

Кто-нибудь знает, что я могу сделать, чтобы исправить это? Я уже просмотрел Как я могу исправить эта ошибка? Gtk-WARNING **: GModule ... проверка инициализации не удалась: слишком старая версия GLib (микро несоответствие) и связанные вопросы, но не удалось найти ответы.


ИЗМЕНИТЬ:


вызов conda remove glib избавляет от сообщения об ошибке, но сценарий все еще не завершается. ПРИМЕЧАНИЕ. Тот же код работает при выполнении в блокноте ipython.


person sequence_hard    schedule 26.01.2017    source источник