【发布时间】:2011-10-12 13:36:53
【问题描述】:
假设我在 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,位于不同的目录中。
【问题讨论】:
标签: 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,位于不同的目录中。
【问题讨论】:
标签: python
如果z.py中的代码间接导入了x.py,则会在sys.modules中。所以试试:
module = sys.modules.get('x')
if module is not None:
print module.__file__
【讨论】:
y 之前已经导入了 x 时,它才会起作用。如果 x.py 是主脚本并导入y,它将不起作用,因为不会导入x。
导入x 并评估x.__file__。
【讨论】:
在这种情况下,这些进口可能会导致连锁进口。因此,在某些函数命名空间中导入 main 模块。
def where_is_x():
import __main__
print __main__.__file__
【讨论】: