Am 27.02.2019 um 14:23 schrieb Guenter Milde <mi...@users.sf.net>: > > On 2019-02-26, Stephan Witt wrote: >> Am 26.02.2019 um 13:15 schrieb Guenter Milde <mi...@users.sf.net>: >>> On 2019-02-26, Stephan Witt wrote: >>>> Am 26.02.2019 um 09:06 schrieb Guenter Milde <mi...@users.sf.net>: >>>>> On 2019-02-26, Stephan Witt wrote: > > ... > >>>>>> Traceback (most recent call last): >>>>>> File "/Users/stephan/git/lyx/lib/scripts/convertDefault.py", line 38, in >>>>>> <module> >>>>>> output = output.decode() >>>>>> AttributeError: 'str' object has no attribute 'decode' > > ... > >>> I suppose that the unpatched code is correct with older Py3 versions, where >>> `os.popen()` may have returned a bytes-string but the regexp-match a >>> unicode-string and no implicit conversion is done. > > ... > >> The change 5b160e82be3 is to blame for this piece of code and is by José. >> His intention was it to prepare the scripts for the transition to Python 3. >> Probably he wants to comment on this or improve it further. ;-) > > Could you test the following workaround, please? > This should help to ensure we have a (unicode) string object in Python3 > without doing harm in other cases. > > Günter
Yes, this works for Python 3.6.6 on my system. With Python 2.7.15 it works too. Stephan > > > diff --git a/lib/scripts/convertDefault.py b/lib/scripts/convertDefault.py > index 8678965013..c7db4f5499 100644 > --- a/lib/scripts/convertDefault.py > +++ b/lib/scripts/convertDefault.py > @@ -35,7 +35,10 @@ if fout.close() != None: > output = fout.readline() > fout.close() > if not PY2: > - output = output.decode() > + # ensure we have a (unicode) string object in Python3 > + # FIXME: not required for version >= 3.5 > + # check whether this is required with any supported 3.x version! > + output = str(output) > > version = re_version.match(output) > > >