如何获取模块位置

8

当我使用导入模块时

import module_name

我能否查看模块在我的硬盘上的位置?


如何找到Python模块源代码的位置 - Hugo
4个回答

11

值得一提的是,模块包有__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),正如应该的那样,因为 "package" 导入只是一个名为 __init__ 的模块。(package.__path__ == ['package']) - Chris Morgan
函数怎么样?它们的位置也可以确定吗(另一个选项似乎是只检查导入它的模块的路径,并希望之间没有混淆。 - Bunny Rabbit
@Bunny 你可以像 @Nedec 建议的那样使用 inspect。 - khachik

3
尝试: module_name.__file__
如果您想要“检查”一个对象,请使用:inspect

1
import module_name
module_name.__file__

0

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

import sys print sys.__file__


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接