pyinstaller打包减小体积以及一些技巧小记

导语

在使用pyinstaller进行程序打包的时候会发现明明程序本身不打,打包出来却达到几百兆的情况,这是因为打包环境有很多不必要的包导致的,因此如果我们用一个纯净的环境打包,体积就会小很多,本文介绍如何使用virtualenv来做打包减小体积以及一些其他技巧

step1 安装virtualenv

直接pip安装virtualenv即可

step2 使用virtualenv创建纯净环境

在任意文件夹下(推荐项目文件夹)执行命令

 virtualenv pyinstallerenv

其中 pyinstallerenv 是自己命名的环境名称,该创建方式默认会以当前python为基础创建环境,另外也可指定python,使用下面命令

virtualenv -p /usr/bin/python38 my_project_env

创建完成后该路径下会创建一个以刚刚新环境命名的文件夹

step3 激活纯净环境

ubuntu

进入例如 ./pyinstallerenv/bin中执行命令

source ./activate

windows

进入例如 ./pyinstallerenv/Scripts 中执行命令

activate 

以上两种方式均会发现当前shell命令行前会有一个(pyinstallerenv),表示现在已经激活环境

step4 打包

接下来安装pyinstaller以及自己项目的依赖库,然后进行正常打包操作即可

注意事项

linux

在linux下打包程序直接双击是无法显示命令行的

方法一:

手动创建一个desktop指定打开命令行,这样才可以双击运行带命令行的程序,原因如下

https://github.com/pyinstaller/pyinstaller/issues/3171

随便创建一个文件,输入以下内容

[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Terminal=true
Exec=/home/cyh/workspace/SLAVE/cyh_dev/xuxiaoli/battery/dist/charge_test
Name=charge_test.desktop
#Icon=/path/to/icon

Exec是可执行程序位置,Name是该启动方式名称,Terminal=true表示开启命令行

方法二

python直接命令调出终端,例如下面命令:

import os

cmd = 'ls'
full_cmd = f"gnome-terminal -e 'bash -c \"{cmd}; exec bash\"'"
os.system(full_cmd)

再记录下windows下调终端的方法(pyinstaller在windows下可以默认打开命令行,此处只是做记录)

import os

cmd = 'dir'
full_cmd = 'start cmd /k ' + cmd
os.system(full_cmd)

windows

windows打包需要使用命令行交互的工具(没有前端),需要注意如果windows的cmd中选项--快速编辑模式打开的情况下,左键点击窗口,会堵塞程序的标准输出(原因可能是快速编辑模式夺取了窗口的标准输出之类的权限),因此可能会看到程序卡住的情况,这时候在窗口点一下右键即可恢复运行

 

posted @ 2021-12-15 16:48  风,又奈何  阅读(354)  评论(0编辑  收藏  举报