如何在PyInstaller构建Python应用后将_internal文件夹重命名为lib
如何在PyInstaller构建Python应用后将_internal文件夹重命名为lib
嘿,我来帮你搞定这个问题!先确认下你的环境:
- Python 3.11
- PyInstaller 6.13.0
- Windows 11
你想要的最终打包结构是这样的对吧:
dist/ └── MyApp/ ├── MyApp.exe └── lib/ (原本默认生成的"_internal"文件夹)
刚好PyInstaller 5.10及以上版本已经支持直接指定这个内部文件夹的名称,不用再手动折腾,给你两种方法参考:
方法一:打包时直接指定(推荐)
这是最省心的方式,直接在打包命令里加--internal-name参数,指定你想要的文件夹名lib就行。比如你的主脚本是your_script.py,打包命令就写成:
pyinstaller --name MyApp --internal-name lib your_script.py
执行完这个命令,你去dist/MyApp/里看,就会发现MyApp.exe旁边已经是lib文件夹了,完全符合你的需求,而且PyInstaller会自动处理exe内部的路径引用,不用担心运行时找不到文件。
方法二:手动修改(适用于旧版PyInstaller)
如果你用的是低于5.10的PyInstaller版本,或者有特殊情况不想用上面的参数,可以按下面步骤来:
- 先正常打包生成默认结构:
pyinstaller --name MyApp your_script.py
这时候dist/MyApp/里是MyApp.exe和_internal文件夹。
2. 把dist/MyApp/_internal重命名为lib。
3. 修正exe的路径引用:
因为MyApp.exe内部硬编码了_internal这个路径,直接改名后运行会报错。你需要用二进制编辑器(比如HxD)打开exe,把所有出现的_internal字符串替换成lib (注意后面加6个空格,保证和原字符串长度一致,避免破坏exe结构)。
不过这种方法容易出错,还是推荐方法一,一步到位更靠谱。
备注:内容来源于stack exchange,提问作者Martin
相关产品推荐
相关产品推荐

