2009-12-14 70 views
0

如果使用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都返回包的文件的路径。

这可能吗?

+0

这听起来像个坏主意。你只需要'sys.argv [0]'而不是? – 2009-12-14 16:03:44

回答

1

使用inspect.getouterframes()inspect.stack(),然后从调用帧中获取文件名。

+0

'进口检验; inspect.stack()[ - 1] [0] .f_code.co_filename'做了诀窍。谢谢! – 2009-12-15 08:07:58

相关问题