【问题标题】:discover path of python module [duplicate]发现python模块的路径[重复]
【发布时间】:2011-10-12 13:36:53
【问题描述】:

可能重复:
Retrieving python module path

假设我在 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


    【解决方案1】:

    如果z.py中的代码间接导入了x.py,则会在sys.modules中。所以试试:

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

    【讨论】:

    • 感谢您的回答。有些东西不工作。模块为无。我编辑了我的问题。我不再关心 z.py 了。我只是想让 y.py 打印出 x.py 的路径。
    • @user584583。只有在 y 之前已经导入了 x 时,它才会起作用。如果 x.py 是主脚本并导入y,它将不起作用,因为不会导入x
    【解决方案2】:

    导入x 并评估x.__file__

    【讨论】:

    • 请注意,系统有 30 个不同的文件,均名为 x.py,位于不同的目录中。
    【解决方案3】:

    在这种情况下,这些进口可能会导致连锁进口。因此,在某些函数命名空间中导入 ma​​in 模块。

    def where_is_x():
        import __main__
        print __main__.__file__
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-04
      • 2015-09-17
      • 2016-09-18
      • 1970-01-01
      • 2011-04-01
      • 1970-01-01
      相关资源
      最近更新 更多