[Python-Dev] importlib hooray! (original) (raw)
Brett Cannon brett at python.org
Wed Feb 6 15:17:49 CET 2013
- Previous message: [Python-Dev] importlib hooray!
- Next message: [Python-Dev] PyCon Tickets Almost Sold Out
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Wed, Feb 6, 2013 at 4:26 AM, Thomas Heller <theller at ctypes.org> wrote:
I have become a fan of the new python 3.3 importlib in the last few days.
Glad it's working out for you!
It has allowed me to write a ModuleMapper which I put into sys.metapath (in sitecustomize.py, for Python 3.3). This mapper currently does rename modules like 'Queue' or 'winreg' to the Python3 modules 'queue' or 'winreg' without the need to change my 2.7 sourcecode (changing the sourcecode is required when using six.moves to write 2.x/3.x compatible code). The six.moves approach has another problem with freeze tools (py2exe for example): ModuleFinder does not find the moved modules because it cannot track import().
I have also started a new modulefinder which uses importlib to find modules; this was quite easy since I could copy a lot of code from importlib.bootstrap. The great thing is that this new modulefinder is much better than the old one: It finds modules in zipped eggs or other zip-archives which are on sys.path; also it finds the renamed modules correctly that my ModuleMapper has mapped. The only thing that I am missing is that it is a bit of guesswork to find out the type of the module that importlib.findloader() has found. Previously imp.findmodule returned a tuple containing the type of module found (like imp.PYSOURCE), I have to poke around in some attributes of the result of importlib.findloader() to guess the type.
You should be able to tell with an isinstance check on the returned loader and not have to look at any attributes (e.g. source will subclass SourceLoader, frozen will subclass FrozenImporter, etc.). If it continues to be an issue just let me know and we can see what we can do (this is obviously a niche need and so I would prefer not to change the loader API to explicitly accommodate this, but it can be done). -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20130206/3f965705/attachment.html>
- Previous message: [Python-Dev] importlib hooray!
- Next message: [Python-Dev] PyCon Tickets Almost Sold Out
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]