2
我有一个包含函数predict_volume()
的文件./model_scripts/medians.py
。 [在bash的终端的tree
输出下面给出]Python:从名称为变量的文件导入函数
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
目录。但我仍然收到上述错误。使用importlib
This回答提示:
import importlib
model_name = 'medians'
...
model = importlib.import_module('model_scripts.'+model_name)
vol = model.predict_volume()
希望了解为什么第方法是行不通的,但第二次却任何见解。
首先是相当于从'导入model_scripts medians'和第二相当于'进口model_scripts.medians',这是两个不同的请求。 – cdhowie
@cdhowie:是不是我通过输入'model = getattr(__ import __('model_scripts'),model_name)'与'model = model_scripts.medians'相同? – IM94
应该是。这假设'model_scripts'甚至导出'medians'。 '从model_scripts导入中值'是否按照您认为应该的方式工作? – cdhowie