如何确定Python中用"import"语句导入的是哪个文件?
在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
...