Hi It seems in 2.6 you are no longer able to use the __import__ function with different paths. Here is our code:
sys.path = g.origSysPath[:] # copy, not reference sys.path.insert(0, modulePath) sys.modules = g.origSysModules.copy() if sys.modules.get(moduleName): del sys.modules[moduleName] # look for modules in subdirectories moduleName = "module_"+moduleName+"/"+moduleName module = __import__(moduleName) Unfortunately, this no longer works in 2.6. Does anyone have any idea on how to make it work with file paths? After quite a lot of searching, I was actually able to find a patch that someone made to fix this. Here is the code: sfepy.googlecode.com/issues/attachment? aid=-8587746048072650671&name=import.patch --------------------------------------------------------------------------- commit 2e92019ef957b547856e81a144db6845bf95d881 Author: Robert Cimrman <cimrm...@ntc.zcu.cz> Date: Thu Mar 5 09:59:59 2009 +0100 fixed load_classes() for Python 2.6 - __import__() function does not work when passing a file path as name diff --git a/sfepy/terms/__init__.py b/sfepy/terms/__init__.py index 3fab007..34a31a6 100644 --- a/sfepy/terms/__init__.py +++ b/sfepy/terms/__init__.py @@ -10,9 +10,9 @@ def load_classes( filenames, is_class ): table = {} for filename in filenames: name = os.path.splitext( filename )[0] -# print filename, name - mod = __import__( name ) -# print mod + parts = name.split( os.path.sep ) + mod, name = '.'.join( parts ), parts[-1:] + mod = __import__( mod, globals(), locals(), name ) for key, var in mod.__dict__.iteritems(): if is_class( key ): table[var.name] = var --------------------------------------------------------------------------- However, after a lot of messing around with the new __import__( mod, globals(), locals(), name ) function, I am still unable to make it work. Perhaps I am just not able to understand exactly what is going on here. Can anyone offer some assistance? Thank you, Paul -- http://mail.python.org/mailman/listinfo/python-list