# 安装打包工具
pip3 install PyInstaller
如果用户使用pyenv
管理python版本则会与pyinstaller
产生冲突。这是由于pyinstaller
需要framework构建的CPython
。
env PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install 3.9.10
# OR
env PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install3.9.10
由于某些特殊原因,这种安装方式往往会下载失败所以首先需要给终端装上弹射座椅:
vim ~/.zshrc
## 添加弹射椅配置,端口的配置取决于梯子的实际配置
export http_proxy="sock5://127.0.0.1:1080"
export https_proxy="socks5://127.0.0.1:1080"
echo "Socks Proxy on"
# 测试
curl myip.ipip.net
# 地址为大陆之外的地区即可
# 打包
pyinstaller -n "APP名称" --windowed app.py
打包成功后,在dist
文件夹中可以找到该文件。双击点开即可使用。
ICON 制作
事先准备好一个1024*1024像素的图片,然后进行剪辑压缩到文件夹tmp.iconset
:
sips -z 16 16 2x.png --out tmp.iconset/icon_16x16.png
sips -z 32 32 2x.png --out tmp.iconset/icon_16x16@2x.png
sips -z 32 32 2x.png --out tmp.iconset/icon_32x32.png
sips -z 64 64 2x.png --out tmp.iconset/icon_32x32@2x.png
sips -z 128 128 2x.png --out tmp.iconset/icon_128x128.png
sips -z 256 256 2x.png --out tmp.iconset/icon_128x128@2x.png
sips -z 256 256 2x.png --out tmp.iconset/icon_256x256.png
sips -z 512 512 2x.png --out tmp.iconset/icon_256x256@2x.png
sips -z 512 512 2x.png --out tmp.iconset/icon_512x512.png
sips -z 1024 1024 2x.png --out tmp.iconset/icon_512x512@2x.png
# 然后基于该文件夹生成icns文件
iconutil -c icns tmp.iconset -o Icon.icns
# 生成带有ICON的app
pyinstaller --name "YOUR_APP_NAME" --icon "Icon.icns" --windowed app.py
图片资源的导入
在开发环境中我们可以使用相对路径引入图片,但是这种方式在打包后静态资源会丢失。所以需要使用OS级别的绝对路径导入图片。
import os
basedir = os.path.dirname(__file__)
button1.setIcon(QIcon(os.path.join(basedir, "icons", "hand.png")))
创建磁盘镜像
brew install create-dmg
# 创建脚本
touch builddmg.sh
代码如下:
#!/bin/sh
# Create a folder (named dmg) to prepare our DMG in (if it doesn't already exist).
mkdir -p dist/dmg
# Empty the dmg folder.
rm -r dist/dmg/*
# Copy the app bundle to the dmg folder.
cp -r "dist/头文字Z.app" dist/dmg
# If the DMG already exists, delete it.
test -f "dist头文字Z.dmg" && rm "dist/头文字Z.dmg"
create-dmg \
--volname "头文字Z" \
--volicon "Icon.icns" \
--window-pos 200 120 \
--window-size 600 300 \
--icon-size 100 \
--icon "头文字Z.app" 50 50 \
--hide-extension "头文字Z.app" \
--app-drop-link 425 120 \
"dist/头文字Z.dmg" \
"dist/dmg/"
chmod +x builddmg.sh
./builddmg.sh