homepage

This issue tracker has been migrated to GitHub , and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: "distributions can disable the encodings package"
Type: Stage: resolved
Components: Interpreter Core Versions: Python 3.3
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: Nosy List: amaury.forgeotdarc, eric.araujo, loewis, pitrou, python-dev, terry.reedy
Priority: low Keywords:

Created on 2012年01月06日 20:32 by pitrou, last changed 2022年04月11日 14:57 by admin. This issue is now closed.

Messages (5)
msg150767 - (view) Author: Antoine Pitrou (pitrou) * (Python committer) Date: 2012年01月06日 20:32
In _PyCodecRegistry_Init() (in Python/codecs.c), it is attempted to import the encodings module (so that the default search function gets registered) and failures get ignored following the same reasoning:
 /* Ignore ImportErrors... this is done so that
 distributions can disable the encodings package. Note
 that other errors are not masked, e.g. SystemErrors
 raised to inform the user of an error in the Python
 configuration are still reported back to the user. */
However, it is unlikely for Python 3 to start up at all without an encodings package (we needs some codecs to initialize stdio). Also, I'm not sure what the point would be. Distributions can simply distribute a dummy encodings module if they really want to disable the default encodings.
Not silencing the error would probably make it easier to diagnose early import issues.
msg150777 - (view) Author: Amaury Forgeot d'Arc (amaury.forgeotdarc) * (Python committer) Date: 2012年01月06日 23:23
Agreed. This behavior probably comes from the times when unicode was an optional feature.
msg151220 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2012年01月14日 03:57
Those lines were whitespace reformed by Antoine in 61466/61463.
They previously came from 28325 which fixed #663074 (2003).
I do not see any discussion in that issue of making the import optional.
I suspect there is no test of Python working with no encodings ;-)
Just for fun, I commented out the import and error checks. There is an error message during the build about python_d.exe not working and python_d.exe crashes (ungracefully) on explicit startup, as you expected. I presume the patch is to delete the entire block added in 28325:
 if (PyErr_ExceptionMatches(PyExc_ImportError)) {
 /* Ignore ImportErrors... this is done so that
 distributions can disable the encodings package. Note
 that other errors are not masked, e.g. SystemErrors
 raised to inform the user of an error in the Python
 configuration are still reported back to the user. */
 PyErr_Clear();
 return 0;
Only in 3.3 or further back? I can do it if you like.
msg151290 - (view) Author: Antoine Pitrou (pitrou) * (Python committer) Date: 2012年01月15日 15:44
Actually, that code is from bc861add5d71.
But the error was also muted in the initial checkin in d0e06efb3165.
In any case, the silencing should be removed, both in 3.2 and 3.3 IMO.
msg151569 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2012年01月18日 21:35
New changeset 46b245f03f54 by Antoine Pitrou in branch '3.2':
Issue #13722: Avoid silencing ImportErrors when initializing the codecs registry.
http://hg.python.org/cpython/rev/46b245f03f54
New changeset f55529aa023d by Antoine Pitrou in branch 'default':
Issue #13722: Avoid silencing ImportErrors when initializing the codecs registry.
http://hg.python.org/cpython/rev/f55529aa023d 
History
Date User Action Args
2022年04月11日 14:57:25adminsetgithub: 57931
2012年01月18日 21:39:29pitrousetstatus: open -> closed
resolution: fixed
stage: needs patch -> resolved
2012年01月18日 21:35:47python-devsetnosy: + python-dev
messages: + msg151569
2012年01月15日 15:44:39pitrousetmessages: + msg151290
2012年01月14日 03:57:20terry.reedysetnosy: + terry.reedy

messages: + msg151220
stage: needs patch
2012年01月14日 02:47:05eric.araujosetnosy: + eric.araujo
2012年01月06日 23:23:38amaury.forgeotdarcsetmessages: + msg150777
2012年01月06日 20:32:22pitroucreate

AltStyle によって変換されたページ (->オリジナル) /