# 安装打包工具pip3 install PyInstaller
如果用户使用pyenv管理python版本则会与pyinstaller产生冲突。这是由于pyinstaller需要framework构建的CPython。
env PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install 3.9.10# ORenv 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.pngsips -z 32 32 2x.png --out tmp.iconset/icon_16x16@2x.pngsips -z 32 32 2x.png --out tmp.iconset/icon_32x32.pngsips -z 64 64 2x.png --out tmp.iconset/icon_32x32@2x.pngsips -z 128 128 2x.png --out tmp.iconset/icon_128x128.pngsips -z 256 256 2x.png --out tmp.iconset/icon_128x128@2x.pngsips -z 256 256 2x.png --out tmp.iconset/icon_256x256.pngsips -z 512 512 2x.png --out tmp.iconset/icon_256x256@2x.pngsips -z 512 512 2x.png --out tmp.iconset/icon_512x512.pngsips -z 1024 1024 2x.png --out tmp.iconset/icon_512x512@2x.png# 然后基于该文件夹生成icns文件iconutil -c icns tmp.iconset -o Icon.icns# 生成带有ICON的apppyinstaller --name "YOUR_APP_NAME" --icon "Icon.icns" --windowed app.py
图片资源的导入
在开发环境中我们可以使用相对路径引入图片,但是这种方式在打包后静态资源会丢失。所以需要使用OS级别的绝对路径导入图片。
import osbasedir = 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
