Python PyInstaller和MEIPASS文件夹,超过8个字符
我有一个用python和gtk编写的应用程序,它是用PyInstaller编译的 一切都很顺利。但是,有时,应用程序在加载时会崩溃。Windows在ntdll.dll上报告失败。这可能会在任何Windows版本上损坏。我找到了动机 首先,根据文档,应用程序存储在一个名为MEIXXXX的临时文件夹中,其中xxxxxx是一个随机数 然后,如果此文件夹的名称包含超过8个字符,则我的应用程序将在以下行崩溃:Python PyInstaller和MEIPASS文件夹,超过8个字符,python,pyinstaller,Python,Pyinstaller,我有一个用python和gtk编写的应用程序,它是用PyInstaller编译的 一切都很顺利。但是,有时,应用程序在加载时会崩溃。Windows在ntdll.dll上报告失败。这可能会在任何Windows版本上损坏。我找到了动机 首先,根据文档,应用程序存储在一个名为MEIXXXX的临时文件夹中,其中xxxxxx是一个随机数 然后,如果此文件夹的名称包含超过8个字符,则我的应用程序将在以下行崩溃: self.builder.add_from_file(glade_file) 我的“glade
self.builder.add_from_file(glade_file)
我的“glade_文件”是这样装载的:
def resource_path(relative):
directory = getattr(sys, '_MEIPASS', os.path.abspath('.'))
return os.path.join(directory, relative)
它基于以下提示:
当文件夹名称超过八个字符时,Windows将使用波浪号截断名称。像这样:
C:\Users\myuser\AppData\Local\Temp\u\MEI41~1
在本例中,实际文件名如下:
_梅41402
我知道这是为了工作,但这不是我现在所经历的
我的怀疑:
对于类似的问题,我使用以下方法检索了长路径:
if hasattr(sys, '_MEIPASS'):
import win32api
sys_meipass = win32api.GetLongPathName(sys._MEIPASS)
你也许能帮我解决我的问题。