[Python-checkins] cpython (3.4): Issue #16047: Fix module exception list and __file__ handling in freeze.

martin.v.loewis python-checkins at python.org
Sun Mar 30 21:15:41 CEST 2014


http://hg.python.org/cpython/rev/001a6dc996e7
changeset:   90046:001a6dc996e7
branch:      3.4
parent:      90044:ed81acc970d9
user:        Martin v. Löwis <martin at v.loewis.de>
date:        Sun Mar 30 21:07:25 2014 +0200
summary:
  Issue #16047: Fix module exception list and __file__ handling in freeze.
Patch by Meador Inge.

files:
  Lib/site.py                |  11 ++++++++---
  Misc/NEWS                  |   3 +++
  Tools/freeze/freeze.py     |   4 ++++
  Tools/freeze/makeconfig.py |   2 +-
  4 files changed, 16 insertions(+), 4 deletions(-)


diff --git a/Lib/site.py b/Lib/site.py
--- a/Lib/site.py
+++ b/Lib/site.py
@@ -364,12 +364,17 @@
         builtins.credits = _sitebuiltins._Printer("credits", """\
     Thanks to CWI, CNRI, BeOpen.com, Zope Corporation and a cast of thousands
     for supporting Python development.  See www.python.org for more information.""")
-    here = os.path.dirname(os.__file__)
+    files, dirs = [], []
+    # Not all modules are required to have a __file__ attribute.  See
+    # PEP 420 for more details.
+    if hasattr(os, '__file__'):
+        here = os.path.dirname(os.__file__)
+        files.extend(["LICENSE.txt", "LICENSE"])
+        dirs.extend([os.path.join(here, os.pardir), here, os.curdir])
     builtins.license = _sitebuiltins._Printer(
         "license",
         "See http://www.python.org/download/releases/%.5s/license" % sys.version,
-        ["LICENSE.txt", "LICENSE"],
-        [os.path.join(here, os.pardir), here, os.curdir])
+        files, dirs)
 
 
 def sethelper():
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -137,6 +137,9 @@
 Tools/Demos
 -----------
 
+- Issue #16047: Fix module exception list and __file__ handling in freeze.
+  Patch by Meador Inge.
+
 - Issue #11824: Consider ABI tags in freeze. Patch by Meador Inge.
 
 - Issue #20535: PYTHONWARNING no longer affects the run_tests.py script.
diff --git a/Tools/freeze/freeze.py b/Tools/freeze/freeze.py
--- a/Tools/freeze/freeze.py
+++ b/Tools/freeze/freeze.py
@@ -365,6 +365,10 @@
         else:
             mf.load_file(mod)
 
+    # Alias "importlib._bootstrap" to "_frozen_importlib" so that the
+    # import machinery can bootstrap.
+    mf.modules["_frozen_importlib"] = mf.modules["importlib._bootstrap"]
+
     # Add the main script as either __main__, or the actual module name.
     if python_entry_is_main:
         mf.run_script(scriptfile)
diff --git a/Tools/freeze/makeconfig.py b/Tools/freeze/makeconfig.py
--- a/Tools/freeze/makeconfig.py
+++ b/Tools/freeze/makeconfig.py
@@ -3,7 +3,7 @@
 
 # Write the config.c file
 
-never = ['marshal', 'imp', '_ast', '__main__', 'builtins',
+never = ['marshal', '_imp', '_ast', '__main__', 'builtins',
          'sys', 'gc', '_warnings']
 
 def makeconfig(infp, outfp, modules, with_ifdef=0):

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list