在Python 3我有這樣的工作的:不同的實現在Python 2.7 __import __()和Python 3.x的
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)
- 從
packageString
- 除去
a_nested_package
從packageString
除去a_nested_package
並用.
另外,如果這是完全錯誤的方法來執行運行時導入的函數,請讓m知道!我非常新到Python(由C來++,PHP和Java)
爲什麼你不使用['importlib'模塊](http://docs.python.org/2/library/importlib.html)? –
你真的想在這裏做什麼?動態導入模塊,或者只是動態地在導入的模塊中選擇一個對象*。 –
@MartijnPieters:因爲我不知道它;-)我會盡快試一試。 – DudeOnRock