首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >“不就是换个平台吗?”——我翻车了3天,终于把软件移植成功了

“不就是换个平台吗?”——我翻车了3天,终于把软件移植成功了

作者头像
大飞记Python
发布2026-04-14 20:45:25
发布2026-04-14 20:45:25
420
举报

问题是这样的:后台有小伙伴问,平时公司电脑是Mac,可不可以把【Chrome下载助手】移植到Mac电脑?

小编原本以为,既然在Windows上运行得好好的,代码逻辑和GUI界面都已经写好了,那移植到Mac不就是“换个平台打包”的事儿吗?开始移植后就被啪啪打脸了 😂

翻车问题

首先小编把源码在Mac电脑上打开,右击运行一下脚本,结果——白屏

iShot_2025-12-04_下午12.01.09
iShot_2025-12-04_下午12.01.09

询问AI后发现,tkinter这个模块在Mac上的兼容性并不友好。于是开始动手改

image-20251205下午22855644
image-20251205下午22855644

改完后界面是出来了,但……所有控件都被拉成了“大长条”,丑得我无法直视。这明显是布局管理器在Mac上对控件尺寸的处理逻辑不同导致的。再改一版!

iShot_2025-12-04_上午11.16.11
iShot_2025-12-04_上午11.16.11

这一版本,看起来终于“像那么回事”了

iShot_2025-12-05_下午2.06.28
iShot_2025-12-05_下午2.06.28

就在我觉得还可以的时候又发现,「下载ChromeDriver」页面的输入框又不见了🥹

iShot_2025-12-04_上午11.46.35
iShot_2025-12-04_上午11.46.35

输入框的问题非常复杂,测试过很多写法都不行,最后只能放弃tkinter改用Mac原生的对话框

iShot_2025-12-05_下午2.07.04
iShot_2025-12-05_下午2.07.04

就在我以为胜利在望时,新的坑又来了。

测试时又发现,输入ChromeDriver版本号后,链接不跳转。。。。。累了😩,毁灭吧!

排除了很多可能性后,发现是进程问题,又又又改了一版本

不过幸运的是的:虽然界面和逻辑调得我头大,但打包过程却异常顺利

打包步骤

小编这里选择了Mac原生支持最好的py2app(主要是小编被折磨够了,选择兼容和稳定性最优的吧)

当然我们以前使用的PyInstaller一样可以完成,而且跨Mac,Windows,linux三个平台都OK的

1、安装py2app

执行安装模块命令

代码语言:javascript
复制
pip install py2app 

2、编写setup.py

创建并编写setup.py配置文件,其实和PyInstaller的spec文件类似

代码语言:javascript
复制
from setuptools import setup

# 打包入口Python文件(必须为列表形式)
APP = ['meihua_mac.py']

# 打包的额外数据文件(此程序无外部数据,为空)
DATA_FILES = []          

# 打包的具体配置
OPTIONS = {
    'argv_emulation': False,          # 标准GUI应用,不处理命令行参数
    'packages': ['requests', 'bs4'],  # 包含的Python包
    'plist': {
        'CFBundleName': 'Chrome下载工具',             # 程序名字
        'CFBundleDisplayName': 'Chrome下载工具',      # 在Dock、菜单栏、启动台显示程序的名字
        'CFBundleVersion': '1.0.0',                  # 版本
        'CFBundleIdentifier': 'com.dafei.chromedownloader',  # 反向DNS格式:com.公司名.应用名
        'NSHumanReadableCopyright': '© 2024 Chrome下载工具 BY DaFei',  # 在"关于"窗口中显示的版权信息
    },
    'iconfile': None,                 # 程序图标
}

# 初始化函数
setup(
    app=APP,                        # 指定主应用脚本
    data_files=DATA_FILES,          # 额外数据文件
    options={'py2app': OPTIONS},    # py2app的配置选项
    setup_requires=['py2app'],      # 构建依赖
)

3、生成app

运行命令直接生成app程序(此程序可以直接在本机打开使用)

代码语言:javascript
复制
python3 setup.py py2app 

4、打包成dmg

但要让其他人可打开使用,需要打包成dmg格式

命令如下:

代码语言:javascript
复制
mkdir -p dmg_build && cp -r dist/Chrome下载工具.app dmg_build/ && ln -s /Applications dmg_build/Applications && hdiutil create -volname "Chrome下载工具" -srcfolder dmg_build -ov -format UDZO Chrome下载工具.dmg && rm -rf dmg_build 

命令详细解释

代码语言:javascript
复制
开始
  ↓
mkdir -p dmg_build(创建临时目录)
  ↓
cp -r dist/app dmg_build/(复制应用)
  ↓
ln -s /Applications dmg_build/Applications(创建快捷方式)
  ↓
hdiutil create ...(打包成DMG)
  ↓
rm -rf dmg_build(清理临时文件)
  ↓
结束(得到Chrome下载工具.dmg)

成功生成dmg文件

image-20251205下午31945536
image-20251205下午31945536

安装使用教程

我们双击打开dmg文件,拖动「Chrome下载工具」到「Applications」中即可

iShot_2025-12-05_下午2.07.49
iShot_2025-12-05_下午2.07.49

等待几秒钟,在Mac启动台中就可以找到我们的「Chrome下载工具」了

iShot_2025-12-05_下午2.09.21
iShot_2025-12-05_下午2.09.21

打开程序,还是熟悉的界面和功能啦~

iShot_2025-12-05_下午2.06.28
iShot_2025-12-05_下午2.06.28

咱就是说:跨平台开发,真的不容易啊。但话说回来,一旦跨过去了,我们的软件就能覆盖更广的用户群,支持更多的平台运行,也算是不白费个人开发者的心吧

还是老规矩,后台回复 “chrome下载助手” 就可以获取Windows和Mac双版本啦~

当然仍然是坚持初心:完全免费,无广告哈

PS:不会真有人问我能不能打包Linux版吧……不会吧?😂(也不是不行,但让我先缓两天……)

开发不易,点赞鼓励一下吧 👏

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-12-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大飞记Python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 翻车问题
  • 打包步骤
    • 1、安装py2app
    • 2、编写setup.py
    • 3、生成app
    • 4、打包成dmg
  • 安装使用教程
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档