在python中,如果我有一个类foo
,我可以用call foo.__module__
来获取一个字符串,它包含它所属模块的名称。如何从模块中获取模块路径
如果我有一个模块bar
,我可以调用bar.__file__
来获取一个字符串与模块加载的路径。
如何,当我只有班foo我可以得到它是模块的一部分的路径? (foo.__module__
返回一个字符串,而不是模块它名字的一个实例)
在python中,如果我有一个类foo
,我可以用call foo.__module__
来获取一个字符串,它包含它所属模块的名称。如何从模块中获取模块路径
如果我有一个模块bar
,我可以调用bar.__file__
来获取一个字符串与模块加载的路径。
如何,当我只有班foo我可以得到它是模块的一部分的路径? (foo.__module__
返回一个字符串,而不是模块它名字的一个实例)
sys.modules
是从模块名称映射到模块:
sys.modules[foo.__module__].__file__
对于这种自省的任务,我总是建议使用Python标准库的inspect
模块:它可以处理一些角落案例& c,并使整个过程更平滑。针对您的特殊任务,inspect.getsourcefile都能得心应手 - 例如,考虑...:
>>> from sched import scheduler as someclass
>>> import inspect
>>> inspect.getsourcefile(someclass)
'/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/sched.py'
这总是试图给你.py
文件,而不是有时.py
文件,有时一个.pyc
文件,而不是 - 不是大不了,但更有用的“规律”。