2012-10-27 132 views
4

是否可以从特定目录导入模块,而不影响导入模块的导入路径?限制导入到特定路径,不限制导入模块的路径

如果我暂时将sys.path替换为所需的目录,则导入的模块将无法导入该目录以外的任何内容。

我不想在目录前加上sys.path,因为我不想导入回落到另一个源。

+0

所以你想导入一个特定的模块*只*如果它存在于一个特定的目录中?为什么不预先输入'sys.path'的路径,导入并测试是否导入了正确的模块?或者在导入之前测试模块文件是否存在? –

+0

我想我可以检查该目录是否包含一个'__init __。py'文件,并且只有在导入时才导入它。如果我要在导入后检查模块是否来自正确的位置,清理起来会有点棘手。 – Acorn

+0

@eryksun,这就是我正在寻找的那种控制!如果你作出答案,我会接受它:) – Acorn

回答

4

标准库的imp module允许您在不改变sys.path的情况下搜索路径列表以查找和导入模块。例如:

import imp 

search_paths = [path_to_spam] 
modfile, modpath, description = imp.find_module('spam', search_paths) 
with modfile: 
    spam = imp.load_module('spam', modfile, modpath, description)