我想得到我的模块(列出所有函数名称),即使使用cProfile也是如此。我怎么能这样做?
为了澄清我在自己的模块中使用了一些内省,但things
当使用sys.modules[__main__]
运行时,当然不再返回我自己的模块。
要重现,请创建modtest.py:
-m cProfile
像这样运行:
#!/usr/bin/env python3
import sys
print(sys.modules[__name__])
如何让最后一行说出$ ./modtest.py
<module '__main__' from './modtest.py'>
$ python -m cProfile ./modtest.py
<module 'cProfile' from '...cProfile.py'>
?
答案 0 :(得分:1)
当您将模块作为DefaultException::getException()
的参数提供时,您将无法从sys.modules
获取模块对象。 cProfile
甚至没有为你导入模块,只是执行它,你甚至无法在执行完后从cProfile
抓取它。
通过sys.modules
开关运行时,-m
必然会指向__main__
,但不会改变它。
您始终可以从cProfile
获取模块名称,然后使用sys.argv[0]
自行导入,然后列出功能名称。