我想將我的程序傳遞給一個文件並從中獲取一個函數。加載沒有模塊的源文件
例如,我有一個文件,foo.py
,誰的位置是未知的,直到運行時,可在我的系統上的任何地方,看起來像這樣:
def bar():
return "foobar"
我如何才能讓我的代碼來運行功能bar
?
如果該位置是運行時間之前知道我能做到這一點:
import sys
sys.path.append("path_to_foo")
import foo
foo.bar()
我可以在文件夾中創建一個init.py
文件,其中foo.py
是和使用importlib
或imp
但似乎凌亂。我不能用__import__
我得到ImportError: Import by filename is not supported.
「我可以使用'importlib' [...],但它似乎凌亂。」當你有麻煩的問題時,你必須求助於混亂的解決方案。爲什麼'importlib'不夠? –
另外,你根本不需要'__init __。py'文件。在Py3中,更強大的'importlib'函數是導入任意文件的正確方法。在早期的Python中,只需將包含'foo.py'的文件夾添加到'sys.path',然後運行'import foo'而不需要使用特殊的導入函數。 – ShadowRanger
foo.py與你的文件在同一個目錄下嗎? – NoOneIsHere