有沒有辦法只獲取由python腳本導入的本地模塊(腳本)列表?如何在python文件中查找本地導入?(使用modulegraph)
我的意思是我有2個文件。掃描的和掃描儀。我需要確定掃描的模塊使用哪些本地模塊(可能使用modulegraph/modulefinder),但我無法自己找到答案。
編輯:我實際上需要這樣做,而無需在掃描儀中導入已掃描的模塊,就像文件掃描一樣。
有沒有辦法只獲取由python腳本導入的本地模塊(腳本)列表?如何在python文件中查找本地導入?(使用modulegraph)
我的意思是我有2個文件。掃描的和掃描儀。我需要確定掃描的模塊使用哪些本地模塊(可能使用modulegraph/modulefinder),但我無法自己找到答案。
編輯:我實際上需要這樣做,而無需在掃描儀中導入已掃描的模塊,就像文件掃描一樣。
我已經通過過濾其他模塊中的所有對象來檢查它是否屬於輸入模塊。
這不是超高效的,但我不認爲它需要。
import foo # your module
import types
print dict((k, v) for (k, v) in foo.__dict__.iteritems() if type(v)==types.ModuleType)
由於python比C/Java更具動態性,如果您無法導入/運行掃描的模塊,則會出現問題。考慮這種類型的代碼:
re = __import__('re')
mymodule = __import__(raw_input()) # even worse for you
取決於你如何知道您掃描模塊,做文本搜索可能會或可能不會被罰款。
是的,它不需要是有效的,它只是爲每個文件運行一個,我不會一次處理超過20個文件。但我需要它在不導入目標模塊的情況下工作。你知道任何你只有一個路徑到目標文件的方式嗎? – tkp33 2013-03-02 14:03:17