Getting file path of imported module
本问题已经有最佳答案,请猛点这里访问。
如何获取在python中导入的模块的文件路径。我正在使用Linux(如果重要的话)。
如果我在home目录中并导入一个模块,它应该返回home目录的完整路径。
模块和包有一个具有路径信息的
1 2 3 4 | import os.path import my_module print(os.path.abspath(my_module.__file__)) |
我一直在用这个:
1 2 3 4 | import inspect import os class DummyClass: pass print os.path.dirname(os.path.abspath(inspect.getsourcefile(DummyClass)) |
(编辑:这是一个"我在哪里"函数-它返回包含当前模块的目录。我不太确定这是不是你想要的。
这将为您提供模块所在的目录:
1 2 | import foo os.path.dirname(foo.__file__) |
要查找已加载模块的加载路径,请执行以下操作:
1 2 3 | >>> import sys >>> sys.modules['os'] <module 'os' from 'c:\Python26\lib\os.pyc'> |
我可能会迟到,一些模块在使用
1 2 3 | >>> import some_module >>> somemodule.__path__ ['/usr/lib64/python2.7/site-packages/somemodule'] |
我一直在使用这种方法,它适用于非内置模块和内置模块:
1 2 3 4 5 6 7 8 9 10 11 12 13 | def showModulePath(module): if (hasattr(module, '__name__') is False): print 'Error: ' + str(module) + ' is not a module object.' return None moduleName = module.__name__ modulePath = None if imp.is_builtin(moduleName): modulePath = sys.modules[moduleName]; else: modulePath = inspect.getsourcefile(module) modulePath = '<module \'' + moduleName + '\' from \'' + modulePath + 'c\'>' print modulePath return modulePath |
例子:
1 2 | Utils.showModulePath(os) Utils.showModulePath(cPickle) |
结果:
1 2 | <module 'os' from 'C:\SciSoft\WinPython-64bit-2.7.10.3\python-2.7.10.amd64\lib\os.pyc'> <module 'cPickle' (built-in)> |
尝试:
help('xxx')
例如
1 2 3 4 5 6 7 8 | >>> help(semanage) Help on module semanage: NAME semanage FILE /usr/lib64/python2.7/site-packages/semanage.py |