实际上,这是有可能的(这段代码没有经过很好的测试,但似乎可以工作)。
文件foo.pyprint "foo module loaded"
文件foo/__init__.pyprint "foo package loaded"
文件test1.pyimport foo
文件test2.pyimport os, imp
def import_module(dir, name):
""" load a module (not a package) with a given name
from the specified directory
"""
for description in imp.get_suffixes():
(suffix, mode, type) = description
if not suffix.startswith('.py'): continue
abs_path = os.path.join(dir, name + suffix)
if not os.path.exists(abs_path): continue
fh = open(abs_path)
return imp.load_module(name, fh, abs_path, (description))
import_module('.', 'foo')
跑步$ python test1.py
foo package loaded
$ python test2.py
foo module loaded