1

我在运行包含单例的已编译应用程序时遇到问题,.pyw 编译过程运行良好,但是当我尝试运行生成的 .exe 时,它​​会写入错误日志,消息如下所示:

Traceback (most recent call last):
  File "main.pyw", line 16, in <module>
  File "tendo\singleton.pyc", line 20, in __init__
AttributeError: 'module' object has no attribute '__file__'

这就是我调用单身人士的方式:

from tendo import singleton
me = singleton.SingleInstance()
4

1 回答 1

1

tendo的单例模块用于sys.modules['__main__'].__file__查找主目录。在 py2exe 中它不存在,这就是您收到此错误的原因。

你可以用这个答案修复它。在 tendo/singleton.py 的第 20 行,你有:

self.lockfile = os.path.normpath(tempfile.gettempdir() + '/' +
  os.path.splitext(os.path.abspath(sys.modules['__main__'].__file__))[0] \
  .replace("/","-").replace(":","").replace("\\","-") + '-%s' % flavor_id +'.lock')

替换为如下内容:

path_to_script = get_main_dir()  #see linkd answer
self.lockfile = os.path.normpath(tempfile.gettempdir() + '/' +  path_to_script
  .replace("/","-").replace(":","").replace("\\","-") + '-%s' % flavor_id +'.lock')

将此作为问题报告给作者,和/或提出修复请求。

于 2012-09-18T18:51:38.797 回答