gh-148750: Unfreeze encodings module to avoid import errors with zipped stdlib (GH-156183)

zooba <[email protected]>
Newsgroups gmane.comp.python.cvs
Message-ID <[email protected]>
https://github.com/python/cpython/commit/ee521e8ac19ad012ebc4e1b3e71b369988a9b9f8
commit: ee521e8ac19ad012ebc4e1b3e71b369988a9b9f8
branch: main
author: Steve Dower <[email protected]>
committer: zooba <[email protected]>
date: 2026-08-24T20:19:30+01:00
summary:

gh-148750: Unfreeze encodings module to avoid import errors with zipped stdlib (GH-156183)

(Reverts fixes applied as part of gh-145278)

files:
A Misc/NEWS.d/next/Core_and_Builtins/2026-08-21-14-38-06.gh-issue-148750.xBijjR.rst
M Makefile.pre.in
M PCbuild/_freeze_module.vcxproj
M PCbuild/_freeze_module.vcxproj.filters
M Python/frozen.c
M Tools/build/freeze_modules.py

diff --git a/Makefile.pre.in b/Makefile.pre.in
index d3d24a13898d992..cc7a27e5c7be474 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -1661,11 +1661,6 @@ FROZEN_FILES_IN = \
 		Lib/zipimport.py \
 		Lib/abc.py \
 		Lib/codecs.py \
-		Lib/encodings/__init__.py \
-		Lib/encodings/aliases.py \
-		Lib/encodings/utf_8.py \
-		Lib/encodings/_win_cp_codecs.py \
-		Lib/encodings/_iconv_codecs.py \
 		Lib/io.py \
 		Lib/_collections_abc.py \
 		Lib/_sitebuiltins.py \
@@ -1692,11 +1687,6 @@ FROZEN_FILES_OUT = \
 		Python/frozen_modules/zipimport.h \
 		Python/frozen_modules/abc.h \
 		Python/frozen_modules/codecs.h \
-		Python/frozen_modules/encodings.h \
-		Python/frozen_modules/encodings.aliases.h \
-		Python/frozen_modules/encodings.utf_8.h \
-		Python/frozen_modules/encodings._win_cp_codecs.h \
-		Python/frozen_modules/encodings._iconv_codecs.h \
 		Python/frozen_modules/io.h \
 		Python/frozen_modules/_collections_abc.h \
 		Python/frozen_modules/_sitebuiltins.h \
@@ -1746,21 +1736,6 @@ Python/frozen_modules/abc.h: Lib/abc.py $(FREEZE_MODULE_DEPS)
 Python/frozen_modules/codecs.h: Lib/codecs.py $(FREEZE_MODULE_DEPS)
 	$(FREEZE_MODULE) codecs $(srcdir)/Lib/codecs.py Python/frozen_modules/codecs.h
 
-Python/frozen_modules/encodings.h: Lib/encodings/__init__.py $(FREEZE_MODULE_DEPS)
-	$(FREEZE_MODULE) encodings $(srcdir)/Lib/encodings/__init__.py Python/frozen_modules/encodings.h
-
-Python/frozen_modules/encodings.aliases.h: Lib/encodings/aliases.py $(FREEZE_MODULE_DEPS)
-	$(FREEZE_MODULE) encodings.aliases $(srcdir)/Lib/encodings/aliases.py Python/frozen_modules/encodings.aliases.h
-
-Python/frozen_modules/encodings.utf_8.h: Lib/encodings/utf_8.py $(FREEZE_MODULE_DEPS)
-	$(FREEZE_MODULE) encodings.utf_8 $(srcdir)/Lib/encodings/utf_8.py Python/frozen_modules/encodings.utf_8.h
-
-Python/frozen_modules/encodings._win_cp_codecs.h: Lib/encodings/_win_cp_codecs.py $(FREEZE_MODULE_DEPS)
-	$(FREEZE_MODULE) encodings._win_cp_codecs $(srcdir)/Lib/encodings/_win_cp_codecs.py Python/frozen_modules/encodings._win_cp_codecs.h
-
-Python/frozen_modules/encodings._iconv_codecs.h: Lib/encodings/_iconv_codecs.py $(FREEZE_MODULE_DEPS)
-	$(FREEZE_MODULE) encodings._iconv_codecs $(srcdir)/Lib/encodings/_iconv_codecs.py Python/frozen_modules/encodings._iconv_codecs.h
-
 Python/frozen_modules/io.h: Lib/io.py $(FREEZE_MODULE_DEPS)
 	$(FREEZE_MODULE) io $(srcdir)/Lib/io.py Python/frozen_modules/io.h
 
diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2026-08-21-14-38-06.gh-issue-148750.xBijjR.rst b/Misc/NEWS.d/next/Core_and_Builtins/2026-08-21-14-38-06.gh-issue-148750.xBijjR.rst
new file mode 100644
index 000000000000000..0f2388f2a53f70a
--- /dev/null
+++ b/Misc/NEWS.d/next/Core_and_Builtins/2026-08-21-14-38-06.gh-issue-148750.xBijjR.rst
@@ -0,0 +1,2 @@
+:mod:`encodings` is no longer frozen, due to issues importing submodules
+when using a zipped standard library.
diff --git a/PCbuild/_freeze_module.vcxproj b/PCbuild/_freeze_module.vcxproj
index 246a07785168161..3cd930e6d8e66d9 100644
--- a/PCbuild/_freeze_module.vcxproj
+++ b/PCbuild/_freeze_module.vcxproj
@@ -317,31 +317,6 @@
       <IntFile>$(IntDir)codecs.g.h</IntFile>
       <OutFile>$(GeneratedFrozenModulesDir)Python\frozen_modules\codecs.h</OutFile>
     </None>
-    <None Include="..\Lib\encodings\__init__.py">
-      <ModName>encodings</ModName>
-      <IntFile>$(IntDir)encodings.g.h</IntFile>
-      <OutFile>$(GeneratedFrozenModulesDir)Python\frozen_modules\encodings.h</OutFile>
-    </None>
-    <None Include="..\Lib\encodings\aliases.py">
-      <ModName>encodings.aliases</ModName>
-      <IntFile>$(IntDir)encodings.aliases.g.h</IntFile>
-      <OutFile>$(GeneratedFrozenModulesDir)Python\frozen_modules\encodings.aliases.h</OutFile>
-    </None>
-    <None Include="..\Lib\encodings\utf_8.py">
-      <ModName>encodings.utf_8</ModName>
-      <IntFile>$(IntDir)encodings.utf_8.g.h</IntFile>
-      <OutFile>$(GeneratedFrozenModulesDir)Python\frozen_modules\encodings.utf_8.h</OutFile>
-    </None>
-    <None Include="..\Lib\encodings\_win_cp_codecs.py">
-      <ModName>encodings._win_cp_codecs</ModName>
-      <IntFile>$(IntDir)encodings._win_cp_codecs.g.h</IntFile>
-      <OutFile>$(GeneratedFrozenModulesDir)Python\frozen_modules\encodings._win_cp_codecs.h</OutFile>
-    </None>
-    <None Include="..\Lib\encodings\_iconv_codecs.py">
-      <ModName>encodings._iconv_codecs</ModName>
-      <IntFile>$(IntDir)encodings._iconv_codecs.g.h</IntFile>
-      <OutFile>$(GeneratedFrozenModulesDir)Python\frozen_modules\encodings._iconv_codecs.h</OutFile>
-    </None>
     <None Include="..\Lib\io.py">
       <ModName>io</ModName>
       <IntFile>$(IntDir)io.g.h</IntFile>
diff --git a/PCbuild/_freeze_module.vcxproj.filters b/PCbuild/_freeze_module.vcxproj.filters
index 35082f57f54e9d8..72f36691f4a143d 100644
--- a/PCbuild/_freeze_module.vcxproj.filters
+++ b/PCbuild/_freeze_module.vcxproj.filters
@@ -558,21 +558,6 @@
     <None Include="..\Lib\codecs.py">
       <Filter>Python Files</Filter>
     </None>
-    <None Include="..\Lib\encodings\__init__.py">
-      <Filter>Python Files</Filter>
-    </None>
-    <None Include="..\Lib\encodings\aliases.py">
-      <Filter>Python Files</Filter>
-    </None>
-    <None Include="..\Lib\encodings\utf_8.py">
-      <Filter>Python Files</Filter>
-    </None>
-    <None Include="..\Lib\encodings\_win_cp_codecs.py">
-      <Filter>Python Files</Filter>
-    </None>
-    <None Include="..\Lib\encodings\_iconv_codecs.py">
-      <Filter>Python Files</Filter>
-    </None>
     <None Include="..\Lib\io.py">
       <Filter>Python Files</Filter>
     </None>
diff --git a/Python/frozen.c b/Python/frozen.c
index 03ee612252343d8..9433d90c15e2eca 100644
--- a/Python/frozen.c
+++ b/Python/frozen.c
@@ -46,11 +46,6 @@
 #include "frozen_modules/zipimport.h"
 #include "frozen_modules/abc.h"
 #include "frozen_modules/codecs.h"
-#include "frozen_modules/encodings.h"
-#include "frozen_modules/encodings.aliases.h"
-#include "frozen_modules/encodings.utf_8.h"
-#include "frozen_modules/encodings._win_cp_codecs.h"
-#include "frozen_modules/encodings._iconv_codecs.h"
 #include "frozen_modules/io.h"
 #include "frozen_modules/_collections_abc.h"
 #include "frozen_modules/_sitebuiltins.h"
@@ -82,11 +77,6 @@ static const struct _frozen stdlib_modules[] = {
     /* stdlib - startup, without site (python -S) */
     {"abc", _Py_M__abc, (int)sizeof(_Py_M__abc), false},
     {"codecs", _Py_M__codecs, (int)sizeof(_Py_M__codecs), false},
-    {"encodings", _Py_M__encodings, (int)sizeof(_Py_M__encodings), true},
-    {"encodings.aliases", _Py_M__encodings_aliases, (int)sizeof(_Py_M__encodings_aliases), false},
-    {"encodings.utf_8", _Py_M__encodings_utf_8, (int)sizeof(_Py_M__encodings_utf_8), false},
-    {"encodings._win_cp_codecs", _Py_M__encodings__win_cp_codecs, (int)sizeof(_Py_M__encodings__win_cp_codecs), false},
-    {"encodings._iconv_codecs", _Py_M__encodings__iconv_codecs, (int)sizeof(_Py_M__encodings__iconv_codecs), false},
     {"io", _Py_M__io, (int)sizeof(_Py_M__io), false},
 
     /* stdlib - startup, with site */
diff --git a/Tools/build/freeze_modules.py b/Tools/build/freeze_modules.py
index b29cc730ca8b24a..a866336fa78879e 100644
--- a/Tools/build/freeze_modules.py
+++ b/Tools/build/freeze_modules.py
@@ -50,11 +50,13 @@
     ('stdlib - startup, without site (python -S)', [
         'abc',
         'codecs',
-        '<encodings>',
-        'encodings.aliases',
-        'encodings.utf_8',
-        'encodings._win_cp_codecs',
-        'encodings._iconv_codecs',
+        # gh-148750: Partially freezing encodings causes import errors of
+        # submodules when using a zipped standard library.
+        #'<encodings>',
+        #'encodings.aliases',
+        #'encodings.utf_8',
+        #'encodings._win_cp_codecs',
+        #'encodings._iconv_codecs',
         'io',
         ]),
     ('stdlib - startup, with site', [

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.