如何才能找到哪个目录模块已经从进口的,因为它需要加载数据文件,该文件是在同一目录下。

编辑:

组合若干答案:

module_path = os.path.dirname(imp.find_module(self.__module__)[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

其他提示

此将工作:

yourmodule.__file__

和,如果你想找到该模块的目的是从输入:

myobject.__module__

到模块的文件的路径是在module.__file__。您可以使用与os.path.dirname得到的目录。

使用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得到改变。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top