是否有模块或推荐方法从Python源文件中获取所有显式import
语句?
我尝试使用这个模块的宝石:modulefinder。我的问题是,它列出了源文件曾经使用的模块的所有,包括递归使用的所有隐式和隐含模块。
我正在寻找一种方法来获取源文件显式导入的导入,不隐式/递归导入。
从文档中拿出这一个:
#bacon.py
import re, itertools
try:
import baconhameggs
except ImportError:
pass
try:
import guido.python.ham
except ImportError:
pass
现在是模块查找器代码:
from modulefinder import ModuleFinder
finder = ModuleFinder()
finder.run_script('bacon.py')
print 'Loaded modules:'
for name, mod in finder.modules.iteritems():
print '%s: ' % name,
print ','.join(mod.globalnames.keys()[:3])
print '-'*50
print 'Modules not imported:'
print '\n'.join(finder.badmodules.iterkeys())
输出:
Loaded modules:
_types:
copy_reg: _inverted_registry,_slotnames,__all__
sre_compile: isstring,_sre,_optimize_unicode
_sre:
sre_constants: REPEAT_ONE,makedict,AT_END_LINE
sys:
re: __module__,finditer,_expand
itertools:
__main__: re,itertools,baconhameggs
sre_parse: __getslice__,_PATTERNENDERS,SRE_FLAG_UNICODE
array:
types: __module__,IntType,TypeType
---------------------------------------------------
Modules not imported:
guido.python.ham
baconhameggs
Loaded modules:
re
itertools
guido.python.ham
baconhameggs
感谢您的建议。
答案 0 :(得分:1)
#modulefinder.py
import filename
print dir(filename)
其中filename是包含' explicit'的模块。进口。 不幸的是,这也显示了你的函数名称。