为什么 importlib 找不到我的模块
Why won't importlib find my module
我正在尝试以编程方式导入模块。
这个有效:
from dirname.models import modelclass as m
但事实并非如此:
import importlib
m = importlib.import_module('models.modelclass', package='dirname')
我从包含目录名的目录中尝试 运行 这个脚本。 dirname 包含一个 __init__.py
文件。
我正在尝试使用 django 来完成这项工作。我收到一个 ImportError 说 "No module named 'models'"
我不确定您是否需要指定包 kwarg,import_module 关于包 kwarg 的说明:
The 'package' argument is required when performing a relative import. It
specifies the package to use as the anchor point from which to resolve the
relative import to an absolute import.
我通常只是这样使用importlib.import_module(我想将其指定为绝对导入):
import importlib
m = importlib.import_module('package.models.ModelClass')
有时我可能会在 django 设置中设置一个变量,例如 MY_CLASS='package.models.ModelClass'
并使用 import_module 在正在使用的 class 之间切换。
我的问题是对我正在尝试做的事情感到困惑,在问题中模型类是一种方法,模型是模块,目录名是包。 import_module 导入模块,而不是方法(顾名思义)。要以编程方式导入方法模型类,我可以使用 getattr():
import dirname.models as mods
# or "mods = importlib.import_module('dirname.models')"
m = getattr(mods, 'modelclass')
我正在尝试以编程方式导入模块。
这个有效:
from dirname.models import modelclass as m
但事实并非如此:
import importlib
m = importlib.import_module('models.modelclass', package='dirname')
我从包含目录名的目录中尝试 运行 这个脚本。 dirname 包含一个 __init__.py
文件。
我正在尝试使用 django 来完成这项工作。我收到一个 ImportError 说 "No module named 'models'"
我不确定您是否需要指定包 kwarg,import_module 关于包 kwarg 的说明:
The 'package' argument is required when performing a relative import. It specifies the package to use as the anchor point from which to resolve the relative import to an absolute import.
我通常只是这样使用importlib.import_module(我想将其指定为绝对导入):
import importlib
m = importlib.import_module('package.models.ModelClass')
有时我可能会在 django 设置中设置一个变量,例如 MY_CLASS='package.models.ModelClass'
并使用 import_module 在正在使用的 class 之间切换。
我的问题是对我正在尝试做的事情感到困惑,在问题中模型类是一种方法,模型是模块,目录名是包。 import_module 导入模块,而不是方法(顾名思义)。要以编程方式导入方法模型类,我可以使用 getattr():
import dirname.models as mods
# or "mods = importlib.import_module('dirname.models')"
m = getattr(mods, 'modelclass')