我正在编写一个使用 Gio 库中的“最近”功能的 Python 脚本。
我如何检查用户系统上的库是否足够新?
- 如果我检查
Gio._version
答案是2.0
- 如果我
gi.require_version('Gio', '2.78')
在导入之前使用,我会收到错误Namespace Gio is already loaded with version 2.0
- 我
/usr/lib/x86_64-linux-gnu/pkgconfig/gio-2.0.pc
这么说2.80
,但我不确定用户是否有.PC
文件可以检查。
除了检查所需的函数是否在模块目录中之外,还有其他解决方案吗?
对于 GLib,其 API 的具体部分是
GLib.MAJOR_VERSION
、GLib.MINOR_VERSION
和GLib.MICRO_VERSION
:https ://docs.gtk.org/glib/version.html可能有一个 pygobject 函数用于此,但我没有看到。
正如您所发现的,大多数
gi
方法与 API 版本有关,而不是库版本。因此,就像Gtk
3.0
vs一样4.0
。我还要补充一点,对于动态语言,您有时会在运行时检查可用的内容
hasattr(GLib, 'some_new_method_i_want')
,而不是检查版本号。