On 18 November 2015 at 02:50, Guido van Rossum <gu...@python.org> wrote: > On Tue, Nov 17, 2015 at 8:20 AM, Serhiy Storchaka <storch...@gmail.com> wrote: >> On 17.11.15 11:59, M.-A. Lemburg wrote: >>> >>> I don't think these situations are all that common, though, >>> so reading in the full source code before compiling it >>> sounds like a reasonable approach. >>> >>> We use the same simplification in eGenix PyRun's emulation of >>> the Python command line interface and it has so far not >>> caused any problems. >> >> Current implementation of import system went the same way. As a result >> importing the script as a module and running it with command line can have >> different behaviours in corner cases. > > I'm confused. *Of course* these two behaviors differ, since Python > uses a different __name__. Not sure how this relates to the REPL.
I think Serhiy was referring to the fact that importlib already reads the entire file before compiling it - since the import abstraction doesn't require modules to be files on disk, it uses the get_code() API on the module loader internally, which is typically implemented by calling get_source() and then passing the result to compile(). That behaviour is then inherited at the command line by both the -m switch and the support for executing directories and zip archives. When we consider that the "-c" switch also executes an in-memory string, direct script execution is currently the odd one out in *not* reading the entire source file into memory first, so Serhiy's proposed simplification of the implementation makes sense to me. Regards, Nick. -- Nick Coghlan | ncogh...@gmail.com | Brisbane, Australia _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com