pyinstaller 打包

原理:pyinstaller 会将python解释器、脚本、及对应的库,打包成一个可执行的exe文件,免去了重新安装python解释器及对应的库的操作,使用户操作方便

下面展示一个demo的案例,项目的目录如下

 

 主要的打包命令是:

pyinstaller -F --key naura demo.py --add-data ".\\sense;.\\sense" --add-data ".\\alg;.\\alg" -w --noconfirm

参数说明:

-F 是打包生成一个文件

--key 是打包机密

--add-data 要把脚本中依赖的目录给加进去, ".\\sense;.\\sense" 的格式是生成对应的配置文件是需要元组的格式,分别对应目前的目录和打包后对应数据的目录名字有点像容器中的数据卷的映射的意思,打包后生成的.spec文件会有对应的数据如下:

 每个模块的代码如下

alg模块下是一个可执行程序和一个__init__.py

 

import os
import subprocess as sp

file_path = os.path.dirname(__file__)
print(file_path)


def start_tj():
    # cmd_str = 'tj.exe'
    cmd_str = 'tj_v2.1.7.exe'
    print(f'path: {file_path}, cmd_str: {cmd_str}')
    res = sp.Popen(cmd_str, shell=True, cwd=file_path)
    res.wait()
    print('code:', res.returncode)

sense 目录下同理

 

import os
import subprocess as sp

file_path = os.path.dirname(__file__)


def start_sense():
    cmd_str = 'sense_shield_installer_pub_2.5.0.58439.exe /S /not_create_desktop_shortcuts /senseshield_hide_taskbar_icon'
    print(f'path: {file_path}, cmd_str: {cmd_str}')
    res = sp.Popen(cmd_str, shell=True, cwd=file_path)
    res.wait()
    print('code:', res.returncode)

demo.py 如下:

# -*- coding:utf-8 -*-

"""
CreateBy: dai.chao
Date: 2023/01/16
"""
import psutil


from sense import start_sense
from alg import start_tj


# 判断是否已经安装了用户工具
def is_exist_user_tool():
    pids = psutil.pids()
    for pid in pids:
        p = psutil.Process(pid)
        name = p.name()
        if name == 'senseshield.exe':
            return True

    else:
        return False


if __name__ == "__main__":

    # 安装用户工具
    if not is_exist_user_tool():
        print("#" * 10, "开始安装用户工具")
        start_sense()
    else:
        print("#"*10, "已经安装了用户工具")

    # 启动机密后的算法程序
    start_tj()

demo1.py 如下

# -*- coding:utf-8 -*-

"""
CreateBy: dai.chao
Date: 2023/02/02
1. 首先把用户程序程序打包进去
2. 安装用户程序,启动主程序
"""

import subprocess as sp
import os


def package():
    # cmd_str = 'pyinstaller -F --key naura demo.py --add-data ".\\sense;.\\sense"  --add-data ".\\alg;.\\alg" --noconfirm '
    # -w 不要cmd 窗口
    cmd_str = 'pyinstaller -F --key naura demo.py --add-data ".\\sense;.\\sense"  --add-data ".\\alg;.\\alg" -w --noconfirm '
    res = sp.Popen(cmd_str, shell=True, cwd=os.getcwd())
    res.wait()
    print('code:', res.returncode)


if __name__ == "__main__":
    package()

运行demo1.py 即可生成一个dist的目录,该目录下生成的demo.exe 就是我们打包好的可执行程序

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值