构建
1 安装依赖
1
2
3
sudo apt install -y gettext # 用于构建多语言文件
pip install -r requirements/common.txt
pip install pyinstaller
2 构建多语言文件
1
2
3
for file in i18n/*; do \
msgfmt -o $file/LC_MESSAGES/macast.mo $file/LC_MESSAGES/macast.po;\
done
3 构建macast二进制文件
1
2
3
4
5
6
7
8
9
10
pyinstaller --noconfirm -F -w \
--additional-hooks-dir=. \
--add-data="macast/.version:." \
--add-data="macast/xml/*:macast/xml" \
--add-data="i18n/zh_CN/LC_MESSAGES/*.mo:i18n/zh_CN/LC_MESSAGES" \
--add-data="macast/assets/*.png:assets" \
--exclude-module=tkinter \
--exclude-module=pyqt \
Macast.py
注意事项
减小二进制文件体积(移除不需要的依赖)
使用pyinstaller打包有时候会把没有用到的包也打包进二进制文件中,这会导致打包之后的文件较大。有两个解决办法:
1 推荐创建新的python虚拟环境或者使用全新的系统环境安装macast依赖的pip包。
2 把明确不需要的包排除在外,比如Macast没有使用tkinter或pyqt,那么可以在构建时指明--exclude-module=tkinter --exclude-module=pyqt
pyinstaller对非主流cpu架构的支持
注意到昨天pyinstall的develop分支合并了一个修复非主流cpu架构的bug:https://github.com/pyinstaller/pyinstaller/pull/6306
希望这有助于解决某些问题(似乎需要手动安装pyinstaller develop的最新分支)
附:X86 docker构建镜像
提供了一个预装pyinstaller和部分依赖的docker镜像,可以用于跨系统快速构建Macast Linux二进制文件
1
2
3
4
5
6
7
8
9
10
11
12
13
git clone https://github.com/xfangfang/Macast.git && cd Macast
for file in i18n/*; do msgfmt -o $file/LC_MESSAGES/macast.mo $file/LC_MESSAGES/macast.po; done
docker run --rm -v "$(pwd):/src/" xfangfang/build-macast \
'pip install -r requirements/linux.txt && \
pyinstaller --noconfirm -F -w \
--additional-hooks-dir=. \
--add-data="macast/.version:." \
--add-data="macast/xml/*:macast/xml" \
--add-data="i18n/zh_CN/LC_MESSAGES/*.mo:i18n/zh_CN/LC_MESSAGES" \
--add-data="macast/assets/*.png:assets" \
--exclude-module=tkinter \
--exclude-module=pyqt \
Macast.py'