我编写了一个使用os.path.abspath(os.path.dirname(__file__)))
来定位其配置文件的程序,当我在纯Python中使用它时,它就像一个魅力,但是只要我使用py2exe将其编译为.exe得到这个错误:
Traceback (most recent call last):
File (main.py, line 17, in <module>
NameError: name '__file__' is not defined
确切地说,第17行是:
if os.path.isfile("%s/config.cfg" % os.path.abspath(os.path.dirname(__file__))):
为什么会发生这种情况以及我如何克服这个问题呢?
提前致谢! :)
答案 0 :(得分:2)
问题是,当您将文件作为输入运行时,解释器会设置__file__
,但运行py2exe'ed可执行文件时则不会。{1}}。您通常希望执行以下操作:
if hasattr(sys, 'frozen'):
# retrieve path from sys.executable
rootdir = os.path.abspath(os.path.dirname(sys.executable))
else:
# assign a value from __file__
rootdir = os.path.abspath(os.path.dirname(__file__))