diff -ur -x importlib.h /home/lemburg/egenix/projects/PyRun/Python-3.4.1/Lib/pkgutil.py ./Lib/pkgutil.py --- /home/lemburg/egenix/projects/PyRun/Python-3.4.1/Lib/pkgutil.py 2014-05-19 07:19:38.000000000 +0200 +++ ./Lib/pkgutil.py 2014-06-13 19:23:16.081487056 +0200 @@ -307,20 +307,27 @@ return self.etc[2]==imp.PKG_DIRECTORY def get_code(self, fullname=None): + # eGenix PyRun needs pkgutil to also work for frozen modules, + # since pkgutil is used by the runpy module, which is needed + # to implement the -m command line switch. + if self.code is not None: + return self.code fullname = self._fix_name(fullname) - if self.code is None: - mod_type = self.etc[2] - if mod_type==imp.PY_SOURCE: - source = self.get_source(fullname) - self.code = compile(source, self.filename, 'exec') - elif mod_type==imp.PY_COMPILED: - self._reopen() - try: - self.code = read_code(self.file) - finally: - self.file.close() - elif mod_type==imp.PKG_DIRECTORY: - self.code = self._get_delegate().get_code() + mod_type = self.etc[2] + if mod_type == imp.PY_FROZEN: + self.code = imp.get_frozen_object(fullname) + return self.code + elif mod_type==imp.PY_SOURCE: + source = self.get_source(fullname) + self.code = compile(source, self.filename, 'exec') + elif mod_type==imp.PY_COMPILED: + self._reopen() + try: + self.code = read_code(self.file) + finally: + self.file.close() + elif mod_type==imp.PKG_DIRECTORY: + self.code = self._get_delegate().get_code() return self.code def get_source(self, fullname=None):