[python]pyinstaller的bootloader不支持中文路径问题

1 问题描述

在windows10下,使用pyinstaller制作了一个exe文件,其中使用了 ‘runtime_tmpdir=’.’’,以便让该exe解压的_MEIxxxxxx 文件与exe文件在同一个目录下。
在将该exe放在没有中文字符的路径下时,程序能够很好的解压,并能正常支持。但是,当将其放在含有中文字符的路径下时,程序无法运行,抛出异常。

2 问题分析

这是关于exe是否支持中文路径的问题,pyinstaller之前解决过该问题。参见下面的网址。
https://pyinstaller.readthedocs.io/en/stable/CHANGES-3.html?highlight=unicode#v3-3-known-issues
在网上也能搜索到一些帮助。
但这里出现的问题,并不是python的不支持的问题。而是由bootload解压时不支持问题。
上述问题的一个现象是:如果exe文件位于中文路径 “D:/test/”,然后 _MEIxxxxxx文件在"D:/test/"下面,程序能够正确执行;但是如果把exe文件放在含中文的路径下面,如"D:/test中文/"下,则 _MEIxxxxxx file 被解压到根目录"D:/"下,致使python再运行时,无法找到解压的库文件而出错。
所以,根源在于pyinstaller解压的问题。
pyinstaller解压是用一个独立的程序bootloader来完成的,在windows下,该程序路径如下:envs\虚拟环境名称\Lib\site-packages\PyInstaller\bootloader\ 下面。如下:
在这里插入图片描述
如果是64位的,则在下面的Windows-64bit文件夹下,如下图:
在这里插入图片描述
分别对应不同的运行模式下的。

3 问题解决

关于bootload不支持中文的问题,这里有一个解释和解决方案:https://github.com/pyinstaller/pyinstaller/issues/5184
这是bootload的一个缺陷,目前,在这个分支版本中解决了这个问题。
https://github.com/rokm/pyinstaller/tree/fix-5184
但是在正式的pyinstaller中还没有解决。期待下个正式的pyinstaller可以解决。

关于这个版本,及bootloader编译后的windows下64位程序,在这里可以查找:https://download.csdn.net/download/kevinshift/12889701

bootloader的重新编译方法,可参考作者的另一篇文章:https://blog.csdn.net/kevinshift/article/details/108817956

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值