我正在寻找一种方法来从本地 文件系统上的位置导入模块,而无需将父目录附加到 sys.path
。这里的显示要求接口例子代码:从目录导入模块而不接触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
变量 temporaribly的解决方法。
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
如果你想添加一个答案,然后在答案,而不是一个问题,这样做。我将问题恢复到原来的形式。 –
@DavidHeffernan:正确的答案是来自C0deH4cker的人。我应该在哪里放置最终代码? Imho把它变成一个新的答案没有什么意义。 –
是的,它把它放在一个新的答案是完全合理的。对于未来的访问者来说,这是一段很有用的代码。你已经接受了正确的答案。添加另一个答案来提供更多的帮助是好的,并鼓励。 –