python3打包mac应用

1.第一步首先创建Tkinter应用,命名为main.py

import sys
import tkinter as tk
root = tk.Tk()
root.title("Sandwich")
tk.Button(root, text="Make me a Sandwich").pack()
tk.mainloop()

2.安装 py2app

 

3.创建setup.py文件

py2applet --make-setup main.py

自动生成的setup.py 文件内容为

from setuptools import setup
 
APP = ['main.py']
DATA_FILES = []
OPTIONS = {'argv_emulation': True}
 
setup(
    app=APP,
    data_files=DATA_FILES,
    options={'py2app': OPTIONS},
    setup_requires=['py2app'],
)

如果你的应用使用的其他文件,比如 JSON 文件,文本文件,图片等,你应该将他们包含在 DATA_FILES 中。 例如:

DATA_FILES = ['testdata.json', 'picture.png']

 

4.发布

创建测试版

python setup.py py2app -A

此时对main.py的修改,app会立刻生效

可以通过命令

open dist/main.app 或者 ./dist/main.app/Contents/MacOS/Sandwich

启动

构建发布版应用

确保旧的 build 和 dist 文件类都被删除了:

rm -rf build dist
python setup.py py2app

此时对main.py的修改都要重新打包

 

5.添加图标

在 OPTIONS 字典中添加 "iconfile": "youricon.icns" 即可:

from setuptools import setup
 
APP = ['Sandwich.py']
DATA_FILES = []
OPTIONS = {
    'argv_emulation': True,
    'iconfile': 'app.icns'
}
 
setup(
    app=APP,
    data_files=DATA_FILES,
    options={'py2app': OPTIONS},
    setup_requires=['py2app'],
)

你可以在网上找到 icns 格式的图标(例如:IconFinder或者freepik)。

应用高级设置

你可以通过修改 Info.plist 来调用应用的信息各行为。最完整的对可用的键的引用是Apple's Runtime Configuratin Guidelines

# -*- coding: utf-8 -*-
from setuptools import setup
 
APP = ['Sandwich.py']
APP_NAME = "SuperSandwich"
DATA_FILES = []
 
OPTIONS = {
    'argv_emulation': True,
    'iconfile': 'app.icns',
    'plist': {
        'CFBundleName': APP_NAME,
        'CFBundleDisplayName': APP_NAME,
        'CFBundleGetInfoString': "Making Sandwiches",
        'CFBundleIdentifier': "com.metachris.osx.sandwich",
        'CFBundleVersion': "0.1.0",
        'CFBundleShortVersionString': "0.1.0",
        'NSHumanReadableCopyright': u"Copyright © 2015, Chris Hager, All Rights Reserved"
    }
}
 
setup(
    name=APP_NAME,
    app=APP,
    data_files=DATA_FILES,
    options={'py2app': OPTIONS},
    setup_requires=['py2app'],
)

创建icns图标的方式

创建目录

mkdir test.iconset // 这里后缀必须是 iconset cd test.iconset

执行命令

$ sips -z 16 16     pic.png --out tmp.iconset/icon_16x16.png
$ sips -z 32 32     pic.png --out tmp.iconset/icon_16x16@2x.png    // 2x是专供Retina屏幕使用的
$ sips -z 32 32     pic.png --out tmp.iconset/icon_32x32.png
$ sips -z 64 64     pic.png --out tmp.iconset/icon_32x32@2x.png
$ sips -z 128 128   pic.png --out tmp.iconset/icon_128x128.png
$ sips -z 256 256   pic.png --out tmp.iconset/icon_128x128@2x.png
$ sips -z 256 256   pic.png --out tmp.iconset/icon_256x256.png
$ sips -z 512 512   pic.png --out tmp.iconset/icon_256x256@2x.png
$ sips -z 512 512   pic.png --out tmp.iconset/icon_512x512.png
$ sips -z 512 512   pic.png --out tmp.iconset/icon_512x512@2x.png

最后执行

iconutil -c icns tmp.iconset -o app.icns

把app.icns放在main.py目录下,即可。

参考地址:https://www.cnblogs.com/alan-babyblog/p/5297025.html

https://blog.csdn.net/qq_37261367/article/details/81128276

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值