Python как перечислить импорт функции python - PullRequest
1 голос
/ 07 февраля 2020

Я использую python и мне нужно получить пользовательскую функцию и указать, какие модули и версии она импортирует. Если я также могу проанализировать, какие локальные скрипты она импортирует, будет лучше

Я нашла this Я хочу сделать это для полного сценария, но мне нужно что-то, что больше похоже на

def a():
    import module

modules_and_versions = analyze(a) 

Спасибо!

1 Ответ

1 голос
/ 07 февраля 2020

Вы можете получить байт-код функции и затем проанализировать имя модуля, где код операции "IMPORT_NAME"

import dis
from subprocess import PIPE, run



def a():
    import pandas




bytecode = dis.Bytecode(a)

modules = [instr.argval for instr in bytecode if instr.opname == "IMPORT_NAME"]

for module in modules:
    command = f"pip show {module} | grep Version"
    result = run(command, stdout=PIPE, stderr=PIPE, universal_newlines=True, shell=True)
    print(module, result.stdout)
...