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