at_yasu's blog

ロード的なことを

__import__ とディレクトリ構造


__import__を使えば動的?にimportをする事が出来ますが、親カレントにあるclassや関数は読めるのかしらと思ったので、ちとテスト。

# test.py
#!/usr/bin/env python

def test():
	print "test function"

obj = __import__ ("f.f")
print obj
fm = getattr(getattr(obj, "f"), "f", None)
fm()
# f/f.py
#!/usr/bin/env python


def f():
	import test
	print test
	test.test()
	print "f.f.py f()"
<module 'f' from '/Users/yasui/Desktop/仕事/new/work/web/naritatrans/f/__init__.pyc'>
<module 'f' from '/Users/yasui/Desktop/仕事/new/work/web/naritatrans/f/__init__.pyc'>
<module 'test' from '/Users/yasui/Desktop/仕事/new/work/web/naritatrans/test.pyc'>
test function
f.f.py f()
<module 'test' from '/Users/yasui/Desktop/仕事/new/work/web/naritatrans/test.pyc'>
test function
f.f.py f()


どうも普通にimportとすれば良いようです。