Need clue with import hackery

Richard Jones richard at bizarsoftware.com.au
Fri Aug 3 02:50:40 CEST 2001


On Friday 03 August 2001 10:37, Richard Jones wrote:
> On Friday 03 August 2001 10:08, you wrote:
> > So what I need to know is if there is some way to import the
> > instance_home package as "instance" rather than as "roundup".
>
> This looks like a lost cause (*). It's just plain too icky :(
>
> Oh well.
>
>
>     Richard
>
> * even if I manage to convince the import mechanisms to import /tmp/roundup
> as "instance", there's imports in the /tmp/roundup package "from roundup
> import foo" which are always going to break. Ho hum.

Hey, this is a fun conversation I'm having with myself here :)

The above comment was written because I was doing:

>>> import imp, sys
>>> sys.path.insert(0,'/tmp')
>>> imp.load_module('instance', None, '/tmp/roundup', ('', '', 5))
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "./roundup/templates/classic/__init__.py", line 9, in ?
    from interfaces import *
  File "./roundup/templates/classic/interfaces.py", line 6, in ?
    from roundup import cgi_client, mailgw 
ImportError: cannot import name cgi_client

... but further investigation shows that the "sys.path.insert(0,'/tmp')" is 
not needed...

>>> import imp, sys
>>> imp.load_module('instance', None, '/tmp/roundup', ('', '', 5))
<module 'instance' from '/tmp/roundup/__init__.pyc'>
>>> sys.modules['roundup']
<module 'roundup' from 'roundup/__init__.pyc'>

Yay! :)

Sorry for the noise :)


     Richard




More information about the Python-list mailing list