使用py2exe时的NameError

时间:2014-05-20 16:27:51

标签: python py2exe

我编写了一个使用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__))):

为什么会发生这种情况以及我如何克服这个问题呢?

提前致谢! :)

1 个答案:

答案 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__))