【问题标题】:Python: Load module by its namePython:按名称加载模块
【发布时间】:2010-07-05 13:42:08
【问题描述】:

我正在开发一个服务于多个站点的 django 项目;根据我想从不同模块导入不同功能的站点;如果我将模块名称和模块名称本身作为字符串,如何在 Python 中导入模块?

【问题讨论】:

    标签: python django import module


    【解决方案1】:

    在Python中,一般可以使用__import__内置函数或者imp模块特性:

    >>> sys1 = __import__("sys")
    >>> import imp
    >>> sys2 = imp.load_module("sys2", *imp.find_module("sys"))
    >>> import sys
    >>> sys is sys1 is sys2
    True
    

    【讨论】:

      【解决方案2】:

      Django 有自己的导入函数来从字符串中获取对象。来自documentation

      django.utils.module_loading

      使用 Python 模块的函数。

      import_string(dotted_path)
      

      导入点分模块路径并返回路径中姓氏指定的属性/类。如果导入失败,则引发 ImportError。例如:

      from django.utils.module_loading import import_string
      ValidationError = import_string('django.core.exceptions.ValidationError')
      

      相当于:

      from django.core.exceptions import ValidationError
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-07-07
        • 2011-08-21
        • 2017-08-11
        • 1970-01-01
        • 2018-09-04
        • 1970-01-01
        相关资源
        最近更新 更多