【发布时间】:2016-03-17 14:04:39
【问题描述】:
我有一个用 python 和 gtk 用 PyInstaller 编译的应用程序。
一切正常。但是,有时,应用程序在加载时会崩溃。 Windows 报告 ntdll.dll 失败。这可能会在任何 Windows 版本上发生。我找到了动机。
首先,根据文档how the one file program works,应用程序存储在一个名为 MEIXXXX 的临时文件夹中,其中 xxxxxx 是一个随机数。
然后,如果此文件夹的名称包含超过 8 个字符,我的应用程序将在此行崩溃:
self.builder.add_from_file(glade_file)
我的“glade_file”是这样安装的:
def resource_path(relative):
directory = getattr(sys, '_MEIPASS', os.path.abspath('.'))
return os.path.join(directory, relative)
它基于以下提示:
How to compile all resources into one executable file?
Bundling data files with PyInstaller (--onefile)
当文件夹名称超过八个字符时,Windows 会使用波浪号截断名称。像这样:
C:\Users\myuser\AppData\Local\Temp_MEI41~1
在这种情况下,真正的文件名是这样的:
_MEI 41402
我知道它是有效的,但这不是我正在经历的。
我的疑惑:
- 有没有办法限制这个文件夹的大小? 我在文档中什么也没看到。
- 有没有办法改变place的临时文件夹?
- 还有其他方法可以解决我的问题,以便我的应用程序安全运行吗?
【问题讨论】:
标签: python pyinstaller