import os
import sys
import imp
def module(root_path, module_name, locals):
# avoid reload, do not import twice.
try:
return sys.modules[module_name]
except KeyError:
pass
if os.path.isabs(root_path):
base_path = os.path.normpath(os.path.dirname(root_path))
else:
path = os.path.dirname(os.path.abspath(locals['__file__']))
base_path = os.path.normpath(os.path.join(path, root_path))
search_paths = [base_path]
package_name = ''
for m in module_name.split('.'):
mod = import_one(search_paths, m)
if package_name:
setattr(locals[package_name], m, mod)
package_name = package_name + '.' + m
else:
package_name = m
locals.update({package_name:mod})
try:
search_paths = mod.__path__
except AttributeError:
assert(package_name == module_name)
break
def import_one(search_paths, module_name):
try:
f, pathname, description = imp.find_module(module_name, search_paths)
except ImportError:
raise ImportError('no such module %s in %s', module_name, search_paths)
try:
mod = imp.load_module(module_name, f, pathname, description)
finally:
if f:
f.close()
return mod
2008年3月31日月曜日
import .. in python but 2.4 or before(2)
my implementation ended up with following code....
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿