如何找到导入模块的目录,因为它需要加载位于同一目录中的数据文件。
编辑:
结合几个答案:
module_path = os.path.dirname(imp.find_module(self.__module__)[1])
得到了我想要的东西
答案 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