3
我正在研究一個插件體系結構,需要將包名稱(如「foo.bar」)轉換爲代碼所在的絕對路徑。 imp.find_module似乎做我想做的事情,除非通過egg-link(通過'pip install develop'安裝)安裝代碼。如何找到通過egg-link安裝的python軟件包的位置?
如果有兩個模塊foo.bar和foo.bar2通過egg-links安裝(並且它們位於完全獨立的文件系統位置,如/ home/bob/foo/bar和/ home/alice/foo/bar2),find_modules不起作用,因爲我查找包「foo」並將位置設置爲foo/bar,但不是foo/bar2。
任何人都有其他功能的建議嗎? find_modules不接受層次結構名稱,所以我不能將「foo.bar2」傳遞給它。
由於這些插件,我不知道包名提前,因此不能使用導入。我需要像「foo.bar」這樣的字符串並將其轉換爲包位置。 – cberner
@cberner:您可以使用帶'__import__'的動態導入,查看我的更新答案的示例。 –
如果您不知道軟件包名稱,那麼您如何使用find_module? (對於這個問題,爲什麼不直接使用你的插件系統的入口點?) –