如何使用“import”语句在Python中确定导入的文件?

8

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

我希望确定我正在加载本地修改过的.py文件的正确版本。就像在POSIX环境中使用"which"一样。

4个回答

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
...

12

查看它的__file__属性。


1
是的,这绝对是最简单的方法。 导入模块 打印模块.file - user297250

4

我想通了。导入的模块有一个__file__字段,它是加载的文件。结合使用__import__,我定义了一个函数:

which = lambda str : __import__(str).__file__


2
当您立即将lambda分配给变量时,应该只使用def语句:def which(str): return __import__(str).__file__ - Roger Pate

0
在每个模块中放置一个显式的版本标识符。
__version__ = "Some.version.String"

无论如何,每次编写模块时都要加入这些内容。

import someModule
print someModule.__version__

这是(a)明确的,(b)易于管理。您还可以使用版本控制工具中的“关键字替换”来在每次提交时实际填充版本字符串。


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