import hook, overwrite import?

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Torsten Mohr

    #1

    import hook, overwrite import?

    Hi,

    is there some description available to overwrite the import
    hook? By googling i found out so far that i need to overwrite
    __builtins__.__ import__ with something else.

    Can i also do this with a C function that is provided when
    using an embedded python interpreter? So my own C program
    provides this and when linking with python.lib the function
    is overwritten?

    Or is there some extension hook?

    Does this also handle "from module import *" not only the normal
    "import module"?


    Thanks for any hints,
    Torsten.


  • Kartic

    #2
    Re: import hook, overwrite import?

    Hi Torsten,

    If you want to use other methods to import (other than good ole file
    system), yes, you can create an importer class and register it as an
    importer module, that import will use to search and import.

    For example, it is possible to use zip imports (this functionality is
    already builtin) to import from a zip archive.
    py>>> import zlib # required
    py>>> import sys
    py>>> sys.path.append ('/location/to/zippedmodules.z ip')
    py>>> import testzip
    py>>> testzip.__file_ _
    '/location/to/zippedmodules.z ip/testzip,py'

    To generally do it, you have to:
    1. Create a class that provides a load_module method that returns a
    module type.
    2. Install your class as a hook using
    sys.path_hooks. append(your_imp orter_class)

    Please take a look at the imp module :
    http://docs.python.org/lib/module-imp.html for a complete description
    on accessing the import internals. There is also a simple example in
    this section.

    Is this is what you are looking for?

    Thanks,
    --Kartic
    PS: This about how much I know...the more I find out, I will share :-)

    Comment

    • Steve Holden

      #3
      Re: import hook, overwrite import?

      Kartic wrote:
      [color=blue]
      > Hi Torsten,
      >
      > If you want to use other methods to import (other than good ole file
      > system), yes, you can create an importer class and register it as an
      > importer module, that import will use to search and import.
      >
      > For example, it is possible to use zip imports (this functionality is
      > already builtin) to import from a zip archive.
      > py>>> import zlib # required
      > py>>> import sys
      > py>>> sys.path.append ('/location/to/zippedmodules.z ip')
      > py>>> import testzip
      > py>>> testzip.__file_ _
      > '/location/to/zippedmodules.z ip/testzip,py'
      >
      > To generally do it, you have to:
      > 1. Create a class that provides a load_module method that returns a
      > module type.
      > 2. Install your class as a hook using
      > sys.path_hooks. append(your_imp orter_class)
      >
      > Please take a look at the imp module :
      > http://docs.python.org/lib/module-imp.html for a complete description
      > on accessing the import internals. There is also a simple example in
      > this section.
      >
      > Is this is what you are looking for?
      >
      > Thanks,
      > --Kartic
      > PS: This about how much I know...the more I find out, I will share :-)
      >[/color]
      I will just chime in to say I too am looking for information in this
      area. I hope to put some sort of BoF or Open Space event together for
      people wishing to learn about (and teach about) the import system from
      PEP 302 at PyCon this year.

      Early bird registration rates are still available today and tomorrow!

      regards
      Steve

      Comment

      Working...