从已安装的包中获取执行文件的路径?
问题描述:
如果使用setuptools安装python包,然后从标准python脚本执行该包中的方法,是否可以获取调用/执行文件的文件路径?从已安装的包中获取执行文件的路径?
举例来说,我在执行文件是/usr/foo/bar.py
,它看起来像这样:
import baz
baz.get_current_path()
# should print /usr/foo/bar.py
和baz
一直使用setuptools的安装,且位于该神奇的地方所有的Python包都安装包时他们一直都很好的小包装。
__file__
和import inspect; inspect.currentframe().f_code.co_filename
都返回包的文件的路径。
这可能吗?
答
使用inspect.getouterframes()
或inspect.stack()
,然后从调用帧中获取文件名。
+0
'进口检验; inspect.stack()[ - 1] [0] .f_code.co_filename'做了诀窍。谢谢! – 2009-12-15 08:07:58
这听起来像个坏主意。你只需要'sys.argv [0]'而不是? – 2009-12-14 16:03:44