Python 3では、次のようなものが機能しました。
def aFunctionImportingAndCallingAnotherFunction(functionName, args):
packageString = "a_nested_package.to_be_imported.at_run_time"
_temp = __import__(packageString, globals(), locals(), [functionName], 0)
function = eval("_temp." + functionName)
return function(args)
Python 2.7 では、渡した関数がfunctionName
存在しないというエラーが表示されます。
この例では、パッケージa_nested_package
は にsys.path
あり、パッケージto_be_imported
にはパッケージがあり、パッケージにはパッケージがありますat_run_time
。すべてのパッケージには__init__.py
ファイルがあります。
私は試した:
- レベル引数で遊んでいます(-1と1を試しました)
a_nested_package
からの削除packageString
- から削除
a_nested_package
しpackageString
て置き換える.
また、これが関数の実行時インポートを行うための完全に間違ったアプローチである場合は、私に知らせてください! 私はPythonにかなり慣れていません(C ++、PHP、およびJavaから来ました)