我有一个文件./model_scripts/medians.py
,其中包含函数predict_volume()
。 [下面给出的 bash 终端中 tree
的输出]
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'
在阅读其他答案( here )后,我将 __init__.py
添加到 model_scripts
目录中。但我仍然收到上述错误。
This建议使用 importlib
回答:
import importlib
model_name = 'medians'
...
model = importlib.import_module('model_scripts.'+model_name)
vol = model.predict_volume()
如果您能了解为什么第一种方法不起作用但第二种方法有效,我们将不胜感激。
最佳答案
这里 __import__
的正确语法是使用 fromlist
。
以下作品(阅读 here ):
model = getattr(__import__('model_scripts', fromlist=[model_name]), model_name)
关于Python:从名称为变量的文件导入函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42656840/