【问题标题】:how to get module location如何获取模块位置
【发布时间】:2011-05-24 04:36:59
【问题描述】:

当我使用导入模块时

import module_name

是否可以查看该模块在我的硬盘中的哪个位置?

【问题讨论】:

标签: python


【解决方案1】:

值得一提的是,包有__file__属性指向__init__.py,它们也有__path__指向包目录。所以你可以使用hasattr(module_name, '__path__') and module_name.__path__[0] or module_name.__file__

示例(在 REPL 中):

import socket, SOAPpy # SOAPpy is a package
socket.__file__
# .../python2.5/socket.pyc
socket.__path__
# AttributeError: 'module' object has no attribute '__path__'
SOAPpy.__file__
# .../2.5/site-packages/SOAPpy/__init__.pyc
SOAPpy.__path__
# ['.../2.5/site-packages/SOAPpy']

【讨论】:

  • 你有证据吗?我只是在我自己的包上尝试了它,__file__ 在那里(package/__init__.pyc),因为它应该是,因为“包”导入只是一个名为__init__ 的模块。 (package.__path__ == ['package'])
  • 函数呢?是否还可以确定位置(另一个选项似乎只是检查从中导入它的模块的路径,并希望两者之间没有损坏。
  • @Bunny 你可以按照@Nedec 的建议使用inspect。
【解决方案2】:

试试:module_name.__file__

如果您想“检查”一个对象,请使用:inspect

【讨论】:

    【解决方案3】:
    import module_name
    module_name.__file__
    

    【讨论】:

      【解决方案4】:

      您可以使用模块的 file 属性来查找位置。

      import sys print sys.__file__

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-27
        • 2021-06-12
        • 2023-03-28
        • 2020-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多