2
ファイル./model_scripts/medians.py
には、関数predict_volume()
が含まれています。 【下記のbash端末でtree
の出力]Python:名前が変数であるファイルからのインポート関数
model_scripts
├── __init__.py
├── medians.py
└── ...
I関数はインポートされなければならないから、Pythonスクリプトの名前(すなわちmedians.py
)の形態である別のPythonスクリプトにこの機能をインポートする必要があり文字列変数の私が書いたコードは次のとおりです。
model_name = 'medians'
...
model = getattr(__import__('model_scripts'), model_name)
vol = model.predict_volume()
しかし、私は最初の行で、次のエラーが表示されます。他の回答(here)を読み込むと
AttributeError: 'module' object has no attribute 'medians'
、私はmodel_scripts
ディレクトリに__init__.py
を追加しました。しかし、私はまだ上記のエラーを取得しています。
This答えはimportlib
を使うことを提案:
import importlib
model_name = 'medians'
...
model = importlib.import_module('model_scripts.'+model_name)
vol = model.predict_volume()
は最初のアプローチは動作しませんが、2番目がない理由上の任意の洞察力をお願い申し上げます。
最初model_scriptsからmedians'をインポートし、第二は、2つの異なる要求されている 'インポートmodel_scripts.medians'、と等価である 'と等価です。 – cdhowie
@cdhowie: 'model = getattr(__ import __( 'model_scripts')、model_name)'と入力すると、 'model = model_scripts.medians'と同じですか? – IM94
する必要があります。これは 'model_scripts'が' medians'を輸出することを前提としています。 model_scriptsからmediansをインポートするのは、あなたが思うように機能しますか? – cdhowie