試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

PyGTKのプログラム実行時のバージョン判定について

PyGTKのリファレンスを見ると、「new in PyGTK [バージョン]」と書かれているクラスが存在し、これらは、そこに書かれているバージョン以上のPyGTKでのみサポートされていることを示す。
これらの機能を使用する場合、PyGTKのバージョン判定をする必要があるかもしれない。
ここでは、バージョン判定が必要になったときに参考にできるようにするため、ComixCompizConfig Settings Manager(CCSM)のコードを一部引用しておく。
[引用]ファイル名: /usr/bin/comix より

try:
    import pygtk
    pygtk.require('2.0')
    import gtk
    assert gtk.gtk_version >= (2, 8, 0)
    assert gtk.pygtk_version >= (2, 8, 0)
    import pango
    import gobject
except AssertionError:
    print ('You do not have the required versions of GTK+ and/or PyGTK ' +
    'installed.\n\n' +
    'Installed GTK+ version is ' + 
    '.'.join([str(n) for n in gtk.gtk_version]) + '\n' +
    'Required GTK+ version is 2.8.0 or higher\n\n'
    'Installed PyGTK version is ' + 
    '.'.join([str(n) for n in gtk.pygtk_version]) + '\n' +
    'Required PyGTK version is 2.8.0 or higher')
    sys.exit(1)
except:
    print 'PyGTK version 2.8.0 or higher is required to run Comix.'
    print 'No version of PyGTK was found on your system.'
    sys.exit(1)

[引用]ファイル名: /usr/bin/ccsm より

if gtk.pygtk_version < (2,10,0):
    print "PyGtk 2.10.0 or later required"
    raise SystemExit

PyGTKのFAQでも書かれている]が、

  • gtk.pygtk_version: PyGTKのバージョン
  • gtk.gtk_version: 使用されるGTK+のバージョン

となっているため、これを要求バージョンと比較する形となる。
なお、CCSMの例にある「raise SystemExit」では、プロセスの戻り値が0(正常終了の値)になってしまうため、sys.exit()を使用して別の値を返すようにしたほうがよいかもしれない。

使用したバージョン:

  • CompizConfig Settings Manager(CCSM) 0.7.4
  • Comix 3.6.4(3.6.4-r1)
  • PyGTK 2.12.0