Estou escrevendo um script Python que usa uma funcionalidade "recente" na biblioteca Gio.
Como posso verificar se a biblioteca no sistema do usuário é recente o suficiente?
- Se eu verificar
Gio._version
a resposta é2.0
- Se eu usar
gi.require_version('Gio', '2.78')
antes da importação recebo o erroNamespace Gio is already loaded with version 2.0
- Meu
/usr/lib/x86_64-linux-gnu/pkgconfig/gio-2.0.pc
diz2.80
, mas não tenho certeza se os usuários terão um.PC
arquivo para verificar.
Alguma solução, além de verificar se as funções necessárias estão no diretório do módulo?
Para GLib especificamente parte de sua API é
GLib.MAJOR_VERSION
,GLib.MINOR_VERSION
, eGLib.MICRO_VERSION
: https://docs.gtk.org/glib/version.htmlPode haver uma função pygobject para isso, mas não vi nenhuma.
Como você descobriu, a maioria dos
gi
métodos se relacionam com a versão da API, não com a versão da biblioteca. Então, comoGtk
3.0
vs.4.0
Também adicionarei que, para linguagens dinâmicas, às vezes você verificaria em tempo de execução o que está disponível,
hasattr(GLib, 'some_new_method_i_want')
em vez de verificar os números de versão.