查找模块的目录

时间:2010-03-10 13:35:16

标签: python module dirname

如何找到导入模块的目录,因为它需要加载位于同一目录中的数据文件。

编辑:

结合几个答案:

module_path = os.path.dirname(imp.find_module(self.__module__)[1])

得到了我想要的东西

4 个答案:

答案 0 :(得分:1)

这样可行:

yourmodule.__file__

如果要查找模块,则从以下位置导入对象:

myobject.__module__

答案 1 :(得分:1)

模块文件的路径位于module.__file__。您可以使用os.path.dirname来获取目录。

答案 2 :(得分:1)

以re模块为例:

>>> import re
>>> path = re.__file__
>>> print path
C:\python26\lib\re.pyc
>>> import os.path
>>> print os.path.dirname(os.path.abspath(path))
C:\python26\lib

请注意,如果模块位于当前工作目录(“CWD”)中,您将获得一个相对路径,例如foo.py。我养成了立即获取绝对路径的习惯,以防CWD在使用模块路径之前发生变化。

答案 3 :(得分:1)

如果你想通过将module_name指定为字符串来模块目录,即。没有实际导入模块然后使用

def get_dir(module_name):
    import os,imp
    (file, pathname, description) = imp.find_module(module_name)
    return os.path.dirname(pathname)

print get_dir('os')

输出:

C:\Python26\lib

<小时/> foo.py

def foo():
    print 'foo'

bar.py

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

输出:

C:\Documents and Settings\xxx\My Documents
foo