让我们说我在Python项目中有一个数字,我想找出一个特定类定义的包/模块(我知道类名)。有没有一种有效的方法呢?
答案 0 :(得分:9)
您可以使用inspect
模块获取定义模块/包的位置。
inspect.getmodule(my_class)
示例输出:
<module 'module_name' from '/path/to/my/module.py'>
根据文档,
inspect.getmodule(对象)
尝试猜测对象的定义位置。
答案 1 :(得分:0)
让我们通过例子解释
import numpy
print numpy.__file__
给出
/usr/lib64/python2.7/site-packages/numpy/__init__.pyc
在我的机器上。
如果您只有一个类,则可以将该类与python2-ic imp
模块一起使用:
#let unknownclass be looked for
import imp
modulename = unknownclass.__module__
tup = imp.find_module(modulename)
#(None, '/usr/lib64/python2.7/site-packages/numpy', ('', '', 5))
print "path to module", modulename, ":", tup[1]
#path to module numpy : /usr/lib64/python2.7/site-packages/numpy
如您所见,__module__
属性可能正是您所寻找的。 p>
答案 2 :(得分:0)
获取类位置的一种方法是使用类的var size
属性和__module__
字典的组合。
示例:
sys.modules
我应该注意,这并不总是给出正确的模块,它只是给你从哪里获得它的模块。更彻底(但更慢)的方法是使用import sys
from stl import stl
module = sys.modules[stl.BaseStl.__module__]
print module.__file__
模块:
inspect