Using remote source code

pyapplico at gmail.com pyapplico at gmail.com
Sun Mar 25 07:39:47 CEST 2007


On Mar 25, 3:20 pm, a... at mac.com (Alex Martelli) wrote:
> <pyappl... at gmail.com> wrote:
> > Is there any possible way that I can place a .py file on the internet,
> > and use that source code in an .py file on my computer?
>
> You can write an import hook in any way you like; see
> <http://www.python.org/dev/peps/pep-0302/> .
>
> Here's a trivial example (bereft of much error checking, etc).  I've
> uploaded tohttp://www.aleax.it/foo.pya toy module w/contents:
>
> def foo(): return 'foo'
>
> Here's a tiny program to import said module from my site:
>
> import urllib2, sys, new
>
> theurl = 'http://www.aleax.it/'
>
> class Examp(object):
>     names = set([ 'foo', ])
>     def find_module(self, fullname, path=None):
>         if fullname not in self.names: return None
>         self.foo = urllib2.urlopen(theurl+fullname+'.py')
>         return self
>     def load_module(self, fullname):
>         module = sys.modules.setdefault(fullname,
>                                           new.module(fullname))
>         module.__file__ = fullname
>         module.__loader__ = self
>         exec self.foo.read() in module.__dict__
>         return module
>
> def hooker(pathitem):
>     print 'hooker %r' % pathitem
>     if pathitem.startswith(theurl): return Examp()
>     raise ImportError
>
> sys.path_hooks.append(hooker)
> sys.path.append(theurl)
>
> import foo
> print foo.foo()
>
> Alex

Thanks for your help, now I can continue building my source code
generator. :)




More information about the Python-list mailing list