如何确定Python中用"import"语句导入的是哪个文件?

8 投票
4 回答
3790 浏览
提问于 2025-04-15 21:01

在Python中,怎么知道用“import”语句导入的是哪个文件呢?

我想确认我加载的是一个本地修改过的.py文件的正确版本。简单来说,就是想要找到在POSIX环境中用“which”命令能找到的文件。

4 个回答

4

我搞明白了。导入的模块有一个叫做 __file__ 的字段,它表示被加载的文件。把这个和 __import__ 结合起来,我定义了一个函数:

which = lambda str : __import__(str).__file__

12

看看它的 __file__ 属性。

12

-v 参数启动 Python,这样可以开启调试输出。当你导入一个模块时,Python 会显示这个模块是从哪里导入的:

$ python -v
...
>>> import re
# /usr/lib/python2.6/re.pyc matches /usr/lib/python2.6/re.py
import re # precompiled from /usr/lib/python2.6/re.pyc
...

如果你还想看看 Python 在其他地方搜索这个模块的情况,可以再加一个 -v

$ python -v -v
...
>>> import re
# trying re.so
# trying remodule.so
# trying re.py
# trying re.pyc
# trying /usr/lib/python2.6/re.so
# trying /usr/lib/python2.6/remodule.so
# trying /usr/lib/python2.6/re.py
# /usr/lib/python2.6/re.pyc matches /usr/lib/python2.6/re.py
import re # precompiled from /usr/lib/python2.6/re.pyc
...

撰写回答