我在运行包含单例的编译应用程序时遇到问题,.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()
答案 0 :(得分:1)
sys.modules['__main__'].__file__
的{{3}}单例模块tendo以查找主目录。在py2exe中它不存在,这就是你得到这个错误的原因。
您可以使用makes use进行修复。在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')
向作者报告此问题,并/或使用修复程序发出拉取请求。