2011-10-12 70 views
2

可能重复:
Retrieving python module path发现Python模块的路径

假设我有代码3个Python文件。 x.py,y.py,z.py.

x调用y和y调用z。在z.py中的代码中,我想知道x.py在哪个目录中。

是否有函数会告诉我这个?

编辑 忘记z.py.我只是想让y.py打印出x.py的路径。
编辑

请注意,该系统有30个不同的文件,位于不同的目录中名为x.py。

回答

3

如果z.py中的代码已经间接导入x.py,它将在sys.modules中。所以尝试:

module = sys.modules.get('x') 
if module is not None: 
    print module.__file__ 
+0

感谢您的回答。有些事情不起作用。模块是无。我编辑了我的问题。我不再关心z.py。我只是想让y.py打印出x.py的路径。 – user584583

+0

@ user584583。它只会在'y'之前已经导入'x'的时候才起作用。如果x.py是主脚本并导入'y',它将不起作用,因为'x'不会被导入。 – ekhumoro

2

导入x并评估。

+0

请注意,系统有30个不同的文件,所有名为x.py的文件位于不同的目录中。 – user584583

0

在这种情况下,那些进口可能导致链条进口。因此,在某些函数名称空间中导入主要的模块。

def where_is_x(): 
    import __main__ 
    print __main__.__file__