Terry Reedy wrote:
Jean-Michel Pichavant wrote:
Piet van Oostrum wrote:

[snip]

JP> file = "/home/dsp/4.6.0.0/test.py"
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/4.6.0.0')
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/orb.py and the second one 4.6.1/orb.py.

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 __init__.py 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 'file.py' it records it in sys.modules as sys.modules['__magic_word_file''] and then I remove the standard reference. This allows me to import file.py again, but with a totally different path. (path is temporarily added to sys.path)

JM
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to