Odd version scheme

Tim Chase python.list at tim.thechases.com
Thu Feb 12 12:05:06 EST 2015


On 2015-02-12 17:45, Gisle Vanem wrote:
> I tried using Interactive Python with a PyQt4 console:
>    "IPython.exe qtconsole"
> 
> But got a
>    "ImportError: IPython requires PyQT4 >= 4.7, found 4.10.4"
> 
> Looking at Ipython's check (in
> site-packages\IPython\external\qt.py): if QtCore.PYQT_VERSION_STR <
> '4.7': raise ImportError("IPython requires PyQt4 >= 4.7, found
> %s"%QtCore.PYQT_VERSION_STR)
> 
> So even if '4.10' < '4.7', my '4.10' is newer. What odd version
> scheme is this really? I just edited that line to read:
>   if QtCore.PYQT_VERSION_STR < '4.10':'

This looks like it's comparing them as strings.  It would be wiser if
the program compared them as version-numbers:

  from distutils.version import LooseVersion, StrictVersion
  qt_ver = QtCore.PYQT_VERSION_STR
  target_ver = "4.10"
  for t, desc in [
      (str, "String"),
      (LooseVersion, "Loose"),
      (StrictVersion, "Strict"),
      ]:
    a = t(qt_ver)
    b = t(target_ver)
    print("Using %s comparison, '%r < %r' is %s" % (
      desc, qt_ver, target_ver, a < b) 

So the test should actually be something like

  if LooseVersion(QtCore.PYQT_VERSION_STR) < LooseVersion("4.10"):
    balk()

-tkc






More information about the Python-list mailing list