Giter Club home page Giter Club logo

qpt's Introduction

QPT - Quick packaging tool 快捷封装工具

GitHub release (latest by date including pre-releases) GitHub forks GitHub Repo stars Downloads GitHub Build QQGroup

GitHub主页 | Gitee主页

QPT是一款可以“模拟”开发环境的多功能封装工具,一行命令即可将普通的Python脚本打包成EXE可执行程序,与此同时还可轻松引入CUDA等深度学习加速库, 尽可能在用户使用时复现您的开发环境。

版本更新

更新日志

当前版本为V1.0a8版本,接下来的版本将会更换为V1.0Beta1。更新日志

EAP - The Early Access Program

EAP邀测版本:当前版本为尝鲜版本,仅具备基本功能和Win10兼容,而且可能会有未测试出的Bug

使用时如发现问题,强烈建议加QQ群1128826410与我们进行交流,当然也可联系QQ:ZhangAcer进行解决[感谢]

相关案例

以下为内测QPT提供支持的开源项目,在此非常感谢这些作者为QPT提供的宝贵建议以及多次的调试与沟通,这也是QPT走向成熟的关键,同时也要感谢各位大佬在面对Bug时的不杀之恩。

  1. 交互式语义分割标注软件 - PaddleCV-SIG/iann
  2. 景观健康效益辅助评估工具 - JiehangXie/Landscape-Heath-Score

快速使用

安装QPT到当前环境

pip install qpt -U or pip install qpt -i https://pypi.tuna.tsinghua.edu.cn/simple -U

目录结构

首先介绍一下示例项目的目录结构,其中sample_program就是待打包的项目文件夹,里面的run.py就是用户点击EXE文件后需要执行的主程序文件sample.jpg这个“配角”就简单充当一下项目中需要的静态文件好了。

------------
|-sample_sandbox
   |-sample_program
      |-run.py
      |-sample.jpg

开始打包

方式一、撰写打包脚本[推荐]

sample_sandbox目录下新建一个名为create_sample_module.py的py文件。

------------
|-sample_sandbox
   |-sample_program
      |-run.py
      |-sample.jpg
   |-create_sample_module.py

撰写以下代码即可完成打包:

# 导入QPT
from qpt.executor import CreateExecutableModule

if __name__ == '__main__':
    # 实例化Module - 关于路径的部分建议使用绝对路径
    module = CreateExecutableModule(work_dir="./sample_program",                # [项目文件夹]待打包的目录,并且该目录下需要有↓下方提到的py文件
                                    launcher_py_path="./sample_program/run.py", # [主程序文件]用户启动EXE文件后,QPT要执行的py文件
                                    save_path="./out")                          # [输出目录]打包后相关文件的输出目录
                                  # requirements_file="auto"                    # [依赖]此处可填入依赖文件路径,也可设置为auto自动搜索依赖
                                  # hidden_terminal=False                       # [终端窗口]设置为True后,运行时将不会展示黑色终端窗口    
    # 开始打包
    module.make()
方式二、使用命令打包[快捷]

注意:使用命令打包的前提是当前默认Python环境中使用pip安装了qpt,否则可能存在形如qpt不是内部或外部命令,也不是可运行的程序的报错信息。此外,若需要自动搜索依赖,强烈建议将QPT安装在开发环境,并且在开发环境中执行QPT,因为QPT会在搜索文件的import和pip list进行比对来确保搜索结果精确。

打开cmd/终端并输入以下命令即可完成打包:
qpt -f ./sample_program -p ./sample_program/run.py -s ./out

完整命令列表可使用qpt --help获取:

Options:
  -f, --folder TEXT     待打包的文件夹路径,该目录也应当为整个项目的根目录或工作目录,否则可能会导致出现找不到模块等Python基础
                        报错。  [required]
  -p, --py TEXT         待打包的主要Py脚本文件所在的路径,例如要yyy/xxx.py中xxx.py是需要打包的主要Python文件
                        ,那么该处填写xxx.py即可。  [required]
  -s, --save TEXT       打包后文件保存的路径。  [required]
  -r, --require TEXT    自动检测软件包依赖,填写auto后将会自动查找待打包的文件夹路径中所有py文件的import使用情况,最终生
                        成requirements文件
                        当然,也可传入requirements.txt文件路径,这样即可指定依赖列表进行安装。
  -h, --hidden BOOLEAN  是否隐藏全部终端窗口,若输入true或判定为真则隐藏全部Terminal窗口(适用于使用了PyQT、TK等桌
                        面级可视化程序),输入false或判定为否则不隐藏(适用于Console & 终端程序)。
  --help                Show this message and exit.

进阶使用QPT

完整进阶使用文档详见examples/advanced

高阶开发手册

还没写

设计**

仍在编

ToDO - 计划安排

功能支持安排

  • 环境在线、离线部署能力 - 封装后包含基本的Python解释器并具备环境部署能力
  • CUDA环境支持 - 提供GPU版本的部署能力支持 - 预计V1.0 Beta版本加入
  • 支持EXE文件自定义图标
  • 支持封装为单个EXE文件
  • QPT拓展名支持
  • 超轻量级在线环境部署能力 - 环境部分完全在线部署,可轻松控制在1M文件大小
  • QPT图形化封装界面
  • 自定义封装算子 - 提供自定义封装OP支持
  • Module集市
  • 模型加密
  • 增加32位操作系统支持

发版安排

2021.6上旬 QPT V1.0 Alpha版本发布
2021.7 QPT V1.0 Release Candidate(RC)版本发布
2021.8 QPT V1.0 正式版发布

开源协议

本项目使用GNU LESSER GENERAL PUBLIC LICENSE(LGPL)开源协议。

Example:

  1. 使用QPT简单打包了自己的“强化学习小游戏”,该情况无需申请QPT授权以及更换个人代码仓库完整的开源协议。
  2. 对QPT源代码进行了修改,尽管这些代码非恶意代码,但为了保证开发者和使用者权益和安全,在未取得QPT授权的情况下需要开源完整的源代码等LGPL协议中所要求的内容。

qpt's People

Contributors

gt-zhangacer avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.