親ディレクトリをに追加する必要なく、ローカルファイルシステム上の場所からモジュールをインポートする方法を探しています
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