doted filenames in import statements

Jean-Michel Pichavant jeanmichel at
Fri Jul 24 14:34:23 CEST 2009

Terry Reedy wrote:
> Jean-Michel Pichavant wrote:
>> Piet van Oostrum wrote:
>>> [snip]
>>>> JP> file = "/home/dsp/"
>>>> JP> test = __import__(file)
>>>> JP> => no module name blalalal found.
>>>> JP> Any suggestion ? I tried multiple escape technics without any 
>>>> success.
>>> Rightly so.
>>> I think the best would be to add the directory to sys.path 
>>> sys.path.add('/home/dsp/')
>>> and then
>>> __import__('test', ... ) 
>> I see. My problem is that a have to import 2 different files having 
>> de same name. In the same name space I have 2 objects from 2 
>> different software branches, let's say 4.6.0 and 4.6.1.
>> The first object shall import 4.6.0/ and the second one 
>> 4.6.1/
>> If I add 4.6.1 to sys.path, the import statement will look like:
>> self._orb = __import__('orb')
>> The problem is, python wil assume orb is already imported and will 
>> assign the module from the 4.6.0 branch to my 4.6.1 object.
>> Do I have to mess up with sys.modules keys to make python import the 
>> correct file ? Is there a standard/proper way to do that ?
> If you make the directory names into proper identifiers like v460 and 
> v461 and add to each to make them packages and have both 
> on search path, then
> import v460.orb #or import v460.orb as orb460
> import v461.orb #or import v460.orb as orb461
> will get you both. One way or another, they have to get different 
> names within Python.
> Terry Jan Reedy

I finally had to write my own import statement as I prefered to 
manipulate the python objects instead of manipulating third party files. 
Basically when importing '' it records it in sys.modules as 
sys.modules['__magic_word_file''] and then I remove the standard 
reference. This allows me to import again, but with a totally 
different path. (path is temporarily added to sys.path)


More information about the Python-list mailing list