2

我有一个./model_scripts/medians.py包含函数的文件predict_volume()。[tree下面给出的 bash 终端中的输出]

 model_scripts
 ├── __init__.py
 ├── medians.py
 └── ...

我需要将此函数导入另一个 python 脚本,其中必须从中导入函数的 python 脚本的名称(即medians.py)是字符串变量的形式。我写的代码是:

model_name = 'medians'
...
model = getattr(__import__('model_scripts'), model_name)
vol = model.predict_volume()

但我在第一行收到以下错误:

AttributeError: 'module' object has no attribute 'medians'

在阅读其他答案(此处)后,我__init__.pymodel_scripts目录中添加了一个。但我仍然收到上述错误。

这个答案建议使用importlib

import importlib
model_name = 'medians'
...
model = importlib.import_module('model_scripts.'+model_name)
vol = model.predict_volume()

希望对为什么第一种方法不起作用但第二种方法起作用的任何见解。

4

1 回答 1

3

这里的正确语法__import__fromlist与它一起使用。

以下作品(在此处阅读):

model = getattr(__import__('model_scripts', fromlist=[model_name]), model_name)
于 2017-03-08T09:04:18.847 回答