PyInstaller python 打包工具使用
PyInstaller python 打包工具使用
参数
参数名 | 描述 | 说明 |
---|---|---|
-D | 生成one-folder的程序(默认) | 生成结果是一个目录,各种第三方依赖、资源和exe同时存储在该目录 |
-F | 生成one-file的程序 | 生成结果是一个exe文件,所有的第三方依赖、资源和代码均被打包进该exe内 |
–add-data | 打包额外资源 | 用法:pyinstaller main.py --add-data=src;dest。windows以;分割,macOS/linux以:分割 |
-c | 显示命令行窗口 | 与-w相反,默认含有此参数 |
-w | 不显示命令行窗口 | 编写GUI程序时使用此参数有用。 |
-i | 为main.exe指定图标 | 用法:pyinstaller -i beauty.ico main.py |
具体参数看:https://blog.csdn.net/weixin_39000819/article/details/80942423
打包图片等资源
即使使用了–add-data
参数也大概率还是会出现图片文件没有找到的情况。
因为当app运行的时候,会先把资源解压到一个系统的临时目录,包括打包进去的 img文件等。但是,此时的代码并不能直接通过 “img/texture.png” 这样的相对路径来得到文件,应该是因为本身程序就不在这里,所以自然引用不到。
这时需要用到 sys 的一个半私有的属性 sys._MEIPASS
,根据官方的说明,它是 pyinstaller 运行时创建的临时目录的绝对路径。需要在程序运行时判断当前是不是有这个属性,如果有的话,使用生成临时目录下图片的绝对路径,如果没有的话,那就直接返回当前程序的绝对路径:
1 |
|
每次用到图片资源地址的时候都调用get_resource_path
1 |
|
之后就可以使用下面的命令(windows要将:
改成;
)
1 |
|
在disk
目录下生成可执行文件
PyInstaller python 打包工具使用
https://wangyinan.cn/PyInstaller-python-打包工具使用