我正在寻找一种方法来从本地文件系统上的某个位置导入模块,而无需将父目录附加到
sys.path
. 这是显示所需接口的示例代码:
imp = Importer()
imp.add_path(r'C:\pylibs')
foolib = imp.import_('foolib')
print foolib
# <module 'foolib' from 'C:\pylibs\foolib.py'>
我可以想到这样的实现,但我想知道是否有可能没有sys.path
临时交换变量的解决方法。
import sys
class Importer(object):
def __init__(self):
super(Importer, self).__init__()
self.path = []
def add_path(self, path):
self.path.append(path)
def import_(self, name):
old_path = sys.path
sys.path = self.path
try:
return __import__(name, {}, {})
finally:
sys.path = old_path