python3.9 failing?

Russell VT
Thu Dec 23 05:50:14 GMT 2021

On Tue, Dec 21, 2021 at 6:34 AM Achim Gratz <> wrote:

> Marco Atzeri writes:
> > Without Python 3.9  installed python3 should link by default to the
> > next in the line (likely 3.8)
> While python3 still defaults to python38 alternatives should probably
> prioritize 38 over 39?

That's how I "fixed" mercurial on my own installation, as it was
complaining about missing the "parsers" module, from inside the Python 3.9
libraries, IIRC.

$ /usr/sbin/alternatives.exe --display python
python - status is manual.
 link currently points to /usr/bin/python3.8
/usr/bin/python2.7 - priority 27
/usr/bin/python3.8 - priority 38
/usr/bin/python3.6 - priority 36
/usr/bin/python3.7 - priority 37
/usr/bin/python3.9 - priority 39
Current `best' version is /usr/bin/python3.9.

Actually, switching back the alternative to  "python3" is enough to
demonstrate it ... and I update my Cygwin packages fairly religiously
(probably at least every week or two). Though, looking at this, now... it
seems this now says "Python 3.8" (which works) but I'm 99% sure this was
complaining about Python 3.9, earlier.

So, maybe there's some weird race condition with what *.pyc or __pycache__
files are being built, and when? (ie. if the current user can write to the
cygwin directories, Python may have built the "wrong" versions of those
files for the "current" distribution that's now installed?)

Stack dump, below... after I had switched from a force-reinstall on Python
3.9 and Mercurial, to a Python 3,8 alternative, and back (using the
alternatives command).

Cheers -

$ hg status
Traceback (most recent call last):
  File "/usr/lib/python3.8/site-packages/mercurial/", line 69, in
    fakelocals[modname] = mod = getattr(pkg, modname)
  File "/usr/lib/python3.8/site-packages/mercurial/", line 303,
in w
    return f(object, sysstr(name), *args)
AttributeError: module 'mercurial.cext' has no attribute 'parsers'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/bin/hg", line 59, in <module>
  File "/usr/lib/python3.9/importlib/", line 245, in __getattribute__
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in
  File "/usr/lib/python3.8/site-packages/mercurial/", line 21,
in <module>
    from .i18n import _
  File "/usr/lib/python3.9/importlib/", line 245, in __getattribute__
  File "/usr/lib/python3.8/site-packages/mercurial/", line 123, in
    if _plain():
  File "/usr/lib/python3.8/site-packages/mercurial/", line 115, in
    b'HGPLAIN' not in encoding.environ
  File "/usr/lib/python3.9/importlib/", line 245, in __getattribute__
  File "/usr/lib/python3.8/site-packages/mercurial/", line 40,
in <module>
    charencode = policy.importmod('charencode')
  File "/usr/lib/python3.8/site-packages/mercurial/", line 116, in
    mod = _importfrom(pn, mn)
  File "/usr/lib/python3.8/site-packages/mercurial/", line 71, in
    raise ImportError('cannot import name %s' % modname)
ImportError: cannot import name parsers

Russell M. Van Tassell <>

More information about the Cygwin mailing list