【问题标题】:Restrict import to specific path, without restricting the imported module's path限制导入到特定路径,不限制导入模块的路径
【发布时间】:2012-10-27 13:50:35
【问题描述】:

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

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

我不想只是在目录前面加上sys.path,因为我不想导入后退回到另一个来源。

【问题讨论】:

  • 所以您想导入特定的模块,前提是它存在于特定目录中?为什么不预先添加sys.path 的路径,导入并测试是否导入了正确的模块?或者在导入之前测试模块文件是否存在?
  • 我想我可以检查目录是否包含__init__.py 文件,如果包含则只导入它。如果我要在导入后检查模块是否来自正确的位置,清理会有点棘手。
  • @eryksun,这正是我想要的那种控制!如果你回答我会接受的:)

标签: python import sys.path


【解决方案1】:

标准库的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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-27
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    相关资源
    最近更新 更多