假设我有代码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个Python文件。 x.py,y.py,z.py.
x调用y和y调用z。在z.py中的代码中,我想知道x.py在哪个目录中。
是否有函数会告诉我这个?
编辑 忘记z.py.我只是想让y.py打印出x.py的路径。
编辑
请注意,该系统有30个不同的文件,位于不同的目录中名为x.py。
如果z.py
中的代码已经间接导入x.py
,它将在sys.modules
中。所以尝试:
module = sys.modules.get('x')
if module is not None:
print module.__file__
在这种情况下,那些进口可能导致链条进口。因此,在某些函数名称空间中导入主要的模块。
def where_is_x():
import __main__
print __main__.__file__
感谢您的回答。有些事情不起作用。模块是无。我编辑了我的问题。我不再关心z.py。我只是想让y.py打印出x.py的路径。 – user584583
@ user584583。它只会在'y'之前已经导入'x'的时候才起作用。如果x.py是主脚本并导入'y',它将不起作用,因为'x'不会被导入。 – ekhumoro