Python中的Windows服务相对路径问题

时间:2011-02-25 12:33:35

标签: python windows-services exe py2exe

我已经编写了一个使用py2exe编译到exe的小型Windows服务,我从中读取了一个文件。它工作得很好 - 但是 - 我只能使用绝对路径来访问文件,使用相对路径将无法正常工作。在.net中,您可以执行以下操作:

System.Reflection.Assembly.GetEntryAssembly().Location

要获取.exe文件的路径,是否有类似于此的选项,但对于Python?

最诚挚的问候,

的Anders

1 个答案:

答案 0 :(得分:1)

你有几个选择。如果您已有模块对象,则可以<module>.__file__获取路径:

>>> import time
>>> time.__file__
'/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload/time.so'

但是,通常您想知道当前模块的位置,在这种情况下您可以使用:

import inspect

path = inspect.currentframe().f_code.co_filename

(还要记住,这可以是Python可以加载的任何东西 - 所以它可以是.pyd,.pyc,.so,.dll等。)