如何使用“import”语句确定在Python中导入的文件?
我想确定我正在加载本地修改的.py文件的正确版本。基本上相当于POSIX环境中的“which”。
答案 0 :(得分:11)
使用-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
...
答案 1 :(得分:6)
查看其__file__
属性。
答案 2 :(得分:2)
我明白了。导入的模块具有__file__
字段,该字段是已加载的文件。将其与__import__
相结合,我定义了一个函数:
which = lambda str : __import__(str).__file__
。
答案 3 :(得分:0)
在每个模块中放置一个显式版本标识符。
__version__ = "Some.version.String"
将这些内容放在您编写的每个模块中,无一例外。
import someModule
print someModule.__version__
这是(a)明确的,(b)易于管理。您还可以使用版本控制工具中的“关键字替换”在每次提交时为您实际填写版本字符串。