如果您希望在mac下创建一个可执行的应用程序,可以使用 PyInstaller 或 cx_Freeze。这些工具可以将 Python 应用程序打包成独立的可执行文件。

首先安装PyInstaller

pip install pyinstaller

下面是几种简单的使用 PyInstaller 打包应用程序的方法:


mac打包
#带命令窗口,就是打开程序出现,可用于调试
pyinstaller --onefile your_script.py
#不带命令窗口
pyinstaller --onefile --windowed LabelMain.py  
#带应用图标
pyinstaller --onefile --windowed --icon=./logo.ico  LabelMain.py

上面打包后,将在labekMain.py的同级目录下 生成一个dist文件夹,里面就是我们打包好的文件了。

接下来我们怎么把他打包成dmg 呢?这里会用到create-dmg,用brew安装该包:

brew install create-dmg

安装好后,我先测试打包命令

#create-dmg dmg生成位置  要包装成dmg的app 包,就是我们用pyinstaller 命令生成的文件 create-dmg  ./dist/标注工具.dmg /Users/***/PycharmProjects/LabelProject/dist/LabelMain.app

这样我们就可以快速生成了一个dmg安装包文件。不过我们还可以设置更详细参数,比如我们在安装其它应用的时候,打开DMG 包  会出现 背景,图标等。接下来我们介绍一下:

新建一个 package.sh 文件,输入一下内容:


#!/bin/sh
#检查是否存在已经打好的包,则删除
test -f /Users/*/PycharmProjects/LabelProject/dist/标注系统.dmg && rm /Users/*/PycharmProjects/LabelProject/dist/标注系统.dmg
create-dmg \
  --volname "标注系统" \
  --volicon "/Users/baijinhao/PycharmProjects/LabelProject/icon.icns" \
  --background "/Users/baijinhao/PycharmProjects/LabelProject/bg.png" \
  --window-pos 200 120 \
  --window-size 800 400 \
  --icon-size 100 \
  --icon "LabelMain.app"  200 190 \
  --hide-extension "LabelMain.app" \
  --app-drop-link 600 185 \
  "/Users/*/PycharmProjects/LabelProject/dist/标注系统.dmg" \
  "/Users/*/PycharmProjects/LabelProject/dist/LabelMain.app"

chmod 赋予sh文件权限,再运行sh文件,等待打包完成。

ok打包就介绍到这里,希望对你有帮助!


详细参数介绍:

--volname:

设置卷名称(显示在 Finder 侧栏和窗口标题中)

--volicon:

设置音量图标

--background:

设置文件夹背景图片(提供png、gif、jpg)

--window-pos:

设置文件夹窗口的位置

--window-size:

设置文件夹窗口的大小

–text-size:

设置窗口文本大小(10-16)

–icon-size:

设置窗口图标大小(最大 128)

--icon:

设置文件图标的位置

--hide-extension:

隐藏文件扩展名

--app-drop-link:

在位置 x, y 处创建一个指向应用程序的下拉链接

--ql-drop-link:

在位置 x, y 处创建一个指向 /Library/QuickLook 的放置链接

--eula:

将许可证文件附加到 dmg

--rez:

指定用于包含许可证文件的 Rez 工具的自定义路径

–no-internet-enable:

禁用自动挂载和复制

--format:

指定最终图像格式(UDZO|UDBZ|ULFO|ULMO)(默认为 UDZO)

--filesystem:

指定图像文件系统(HFS+|APFS)(默认为 HFS+,APFS 支持 macOS 10.13 或更新版本)

--encrypt:

为生成的磁盘映像启用加密(AES-256 - 系统将提示您输入密码)

--encrypt-aes128:

为生成的磁盘映像启用加密(AES-128 - 系统将提示您输入密码)

--add-file:

添加其他文件或文件夹(可多次使用)

--disk-image-size:

手动将磁盘映像大小设置为 x MB

--hdiutil-verbose:

以详细模式执行 hdiutil

--hdiutil-quiet:

以安静模式执行 hdiutil

--bless:

祝福挂载文件夹(已弃用,需要 macOS 12.2.1 或更早版本,

)

--codesign <签名>:

使用指定签名对磁盘映像进行协同设计

--notarize:

使用钥匙串存储的凭证对磁盘映像(waits 和 staples)进行公证。有关更多信息,请查看Apple 的文档

--skip-jenkins:

跳过 Finder 美化的 AppleScript,在沙盒和非 GUI 环境中很有用

--sandbox-safe:

具有沙盒兼容性的 hdiutil,不支持也不执行装饰性 AppleScript(不支持 APFS 磁盘映像)

--version:

显示工具版本号

-h, --help:

显示帮助

更多使用方法参考: https://github.com/create-dmg/create-dmg