On Tue, Dec 21, 2021 at 6:34 AM Achim Gratz <strom...@nexgo.de> 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 - Russell $ hg status Traceback (most recent call last): File "/usr/lib/python3.8/site-packages/mercurial/policy.py", line 69, in _importfrom fakelocals[modname] = mod = getattr(pkg, modname) File "/usr/lib/python3.8/site-packages/mercurial/pycompat.py", 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> dispatch.run() File "/usr/lib/python3.9/importlib/util.py", line 245, in __getattribute__ self.__spec__.loader.exec_module(self) File "<frozen importlib._bootstrap_external>", line 850, in exec_module File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed File "/usr/lib/python3.8/site-packages/mercurial/dispatch.py", line 21, in <module> from .i18n import _ File "/usr/lib/python3.9/importlib/util.py", line 245, in __getattribute__ self.__spec__.loader.exec_module(self) File "/usr/lib/python3.8/site-packages/mercurial/i18n.py", line 123, in <module> if _plain(): File "/usr/lib/python3.8/site-packages/mercurial/i18n.py", line 115, in _plain b'HGPLAIN' not in encoding.environ File "/usr/lib/python3.9/importlib/util.py", line 245, in __getattribute__ self.__spec__.loader.exec_module(self) File "/usr/lib/python3.8/site-packages/mercurial/encoding.py", line 40, in <module> charencode = policy.importmod('charencode') File "/usr/lib/python3.8/site-packages/mercurial/policy.py", line 116, in importmod mod = _importfrom(pn, mn) File "/usr/lib/python3.8/site-packages/mercurial/policy.py", line 71, in _importfrom raise ImportError('cannot import name %s' % modname) ImportError: cannot import name parsers -- Russell M. Van Tassell <russel...@gmail.com> -- Problem reports: https://cygwin.com/problems.html FAQ: https://cygwin.com/faq/ Documentation: https://cygwin.com/docs.html Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple