Getting file path of imported module [duplicate]

Solution 1:

Modules and packages have a __file__ attribute that has its path information. If the module was imported relative to current working directory, you'll probably want to get its absolute path.

import os.path
import my_module

print(os.path.abspath(my_module.__file__))

Solution 2:

I've been using this:

import inspect
import os
class DummyClass: pass
print os.path.dirname(os.path.abspath(inspect.getsourcefile(DummyClass))

(Edit: This is a "where am I" function - it returns the directory containing the current module. I'm not quite sure if that's what you want).

Solution 3:

This will give you the directory the module is in:

import foo
os.path.dirname(foo.__file__)

Solution 4:

I could be late here, some of the modules would throw AttributeError when using __file__ attribute to find the path. In those case one can use __path__ to get the path of the module.

>>> import some_module
>>> somemodule.__path__
['/usr/lib64/python2.7/site-packages/somemodule']

Solution 5:

To find the load path of modules already loaded:

>>> import sys
>>> sys.modules['os']
<module 'os' from 'c:\Python26\lib\os.pyc'>