一个运动视频摘要Demo,基于PyQt5以及OpenCV.打包工具Pyinstaller.也可以作为PyQt5项目的模板.
.
├─bin - 可执行文件目录
│ └─main - Pyinstaller打包结果目录
├─build - 构建目录
│ │ main.spec - Pyinstaller配置文件(需要修改)
│ └─main - Pyinstaller打包临时目录
├─conf - 配置目录
│ resource.qrc - PyQt5资源配置
│ settings.json - 算法参数配置
│ window_status.ini - 窗口位置配置
│
├─data - 数据目录(存放视频数据或者建模出来的背景图片)
├─docs - 项目文档目录
├─lib - 第三方库目录
├─log - 日志文件目录
├─res - 应用程序资源目录
├─src - 源码目录
│ ├─control - 控制器目录
│ │ │ logger.py - 日志处理
│ │ │ main_controller.py - 窗口控制
│ │ └─ settings.py - 项目设置
│ ├─model - 模型目录
│ │ │ main_mod.py - 主界面模型
│ │ └─ proc_thread.py - 线程处理
│ └─view - 视图目录
│ │ dialog.ui - 帮助页视图
│ │ main.ui - 主界面视图
│ │ resource_rc.py - 项目图标资源
│ │ ui_dialog.py - 帮助页布局
│ └─ ui_main.py - 主界面布局
└─venv - 虚拟环境目录(环境由pipenv在项目外管理,必要时可拷贝一份在此)
直接执行main.py
由于开发环境较为复杂,本项目未经单独测试,如果有问题请提issue.
建议配置main.spec
并配合下方的扩展工具来打包.
注意事项:打包后运行不成功可能是资源或第三方依赖库未成功配置,详细检查.spec和扩展工具命令确保都能索引到相关资源.
详情参考Pyinstaller官方文档.
更多待补充
将常用命令设置为扩展工具分便调试,以下供参考.
如果虚拟环境在项目根目录下,相关程序路径指定$ProjectFileDir$\venv
如果环境由pipenv管理,则相关程序类似在C:\Users\用户名\.virtualenvs\项目名-n9RjFZIL
- name:
requirements
- Description:
pip freeze > requirements.txt
- Program:
...\Python36\Scripts\pip.exe
- Arguments:
freeze > requirements.txt
- Working dir:
$FileDir$
- Description:
- name:
tree
- Description:
导出目录结构树
- Program:
- Arguments:
tree /F > tree.txt
- Working dir:
$ProjectFileDir$
- Description:
- name:
grab-version
- Description:
获取exe版本信息文件
- Program:
...\Python\Python36\python.exe
- Arguments:
...\Python36\Lib\site-packages\PyInstaller\utils\cliutils\grab_version.py $FileName$
- Working dir:
$FileDir$
- Description:
- name:
QtDesigner
- Description:
启动视图编辑器
- Program:
...\Python36\Lib\site-packages\PyQt5\Qt\bin\designer.exe
- Arguments:
- Working dir:
$FileDir$
- Description:
- name:
PyUIC
- Description:
.ui转为.py(py36)
- Program:
...\Python36\python.exe
- Arguments:
-m PyQt5.uic.pyuic $FileName$ -o ui_$FileNameWithoutExtension$.py
- Working dir:
$FileDir$
- Description:
- name:
Pyrcc5
- Description:
pyrcc5 qrcfile.qrc -o pyfile.py
- Program:
...\Python36\Scripts\pyrcc5.exe
- Arguments:
$FileName$ -o $FileNameWithoutAllExtensions$.py
- Working dir:
$FileDir$
- Description:
- name:
pyinstaller(video-proc,spec)
- Description:
直接执行spec文件打包
- Program:
...\Scripts\pyinstaller.exe
- Arguments:
-y --workpath=$ProjectFileDir$\build --distpath=$ProjectFileDir$/bin $FileName$
- Working dir:
$FileDir$
- Description:
- name:
pyinstaller(video-proc,文件夹,debug)
- Description:
生成可执行文件夹(py36,video_proc定制,debug版,去掉--onefile)
- Program:
...\Scripts\pyinstaller.exe
- Arguments:
--noconfirm --clean --windowed --specpath=$ProjectFileDir$\build --workpath=$ProjectFileDir$\build --distpath=$ProjectFileDir$\bin --icon=$ProjectFileDir$\res\$FileNameWithoutExtension$.ico --version-file=$ProjectFileDir$\res\file_version_info.txt --add-binary=$ProjectFileDir$\lib\opencv_ffmpeg400_64.dll;./ --add-binary=$ProjectFileDir$\lib\openh264-1.8.0-win64.dll;./ --add-data=$ProjectFileDir$\conf\settings.json;./conf --paths=C:\Users\用户名\.virtualenvs\video_proc-n9RjFZIL\Lib\site-packages\PyQt5\Qt\bin;$ProjectFileDir$\res;$ProjectFileDir$;$ProjectFileDir$\lib;$ProjectFileDir$\core;$ProjectFileDir$\core\view;$ProjectFileDir$\core\model;$ProjectFileDir$\core\control;$ProjectFileDir$\conf $FileName$
- Working dir:
$FileDir$
- Description:
- name:
pyinstaller(video-proc,文件夹,Release)
- Description:
生成可执行文件夹(py36,video_proc定制,去掉--onefile --windowed)
- Program:
...\Python36\Lib\site-packages\PyQt5\Qt\bin\designer.exe
- Arguments:
--noconfirm --clean --specpath=$ProjectFileDir$\build --workpath=$ProjectFileDir$\build --distpath=$ProjectFileDir$\bin --icon=$ProjectFileDir$\res\$FileNameWithoutExtension$.ico --version-file=$ProjectFileDir$\res\file_version_info.txt --add-binary=$ProjectFileDir$\lib\opencv_ffmpeg400_64.dll;./ --add-binary=$ProjectFileDir$\lib\openh264-1.8.0-win64.dll;./ --add-data=$ProjectFileDir$\conf\settings.json;./conf --paths=C:\Users\用户名\.virtualenvs\video_proc-n9RjFZIL\Lib\site-packages\PyQt5\Qt\bin;$ProjectFileDir$\res;$ProjectFileDir$;$ProjectFileDir$\core;$ProjectFileDir$\core\view;$ProjectFileDir$\core\model;$ProjectFileDir$\core\control;$ProjectFileDir$\conf;$ProjectFileDir$\lib $FileName$
- Working dir:
$FileDir$
- Description:
- name:
pyinstaller(video-proc,单文件,Debug)
- Description:
生成单一可执行文件(py36,video_proc定制)
- Program:
...\Scripts\pyinstaller.exe
- Arguments:
--noconfirm --clean --onefile --windowed --specpath=$ProjectFileDir$\build --workpath=$ProjectFileDir$\build --distpath=$ProjectFileDir$\bin --icon=$ProjectFileDir$\res\$FileNameWithoutExtension$.ico --version-file=$ProjectFileDir$\res\file_version_info.txt --add-binary=$ProjectFileDir$\lib\opencv_ffmpeg400_64.dll;./ --add-binary=$ProjectFileDir$\lib\openh264-1.8.0-win64.dll;./ --add-data=$ProjectFileDir$\conf\settings.json;./conf --paths=C:\Users\用户名\.virtualenvs\video_proc-n9RjFZIL\Lib\site-packages\PyQt5\Qt\bin;$ProjectFileDir$\res;$ProjectFileDir$;$ProjectFileDir$\core;$ProjectFileDir$\core\view;$ProjectFileDir$\core\model;$ProjectFileDir$\core\control;$ProjectFileDir$\conf;$ProjectFileDir$\lib $FileName$
- Working dir:
$FileDir$
- Description: