介绍
py2app是一个Python setuptools命令,它将允许您从Python脚本制作独立的Mac OS X应用程序包和插件。
py2app的目的和设计与Windows的py2exe相似。
注意:py2app必须在OSX上使用才能构建应用程序,它不能在其他平台上创建Mac应用程序
官方网址:
https://github.com/ronaldoussoren/py2app
安装
pip3 install py2app
打包
演示程序
test.py文件内容如下:
import tkinter as tk
root = tk.Tk()
root.title("Sandwich")
tk.Button(root, text="Make me a Sandwich").pack()
tk.mainloop()
第一步:生成setup.py文件
执行命令:
py2applet --make-setup test.py
在当前文件夹可以看到有setup.py文件生成
setup.py文件解释
内容如下:
from setuptools import setup
APP = ['test.py']
DATA_FILES = []
OPTIONS = {'argv_emulation': False,}
setup(
app=APP,
data_files=DATA_FILES,
options={'py2app': OPTIONS},
setup_requires=['py2app'],
)
- DATA_FILES:是要包含的文件,如pyqt中的.ui文件
- OPTIONS:如果有第三方包、模块,写在这里
OPTIONS = { 'argv_emulation': False, 'iconfile': 'Icon.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 © 2017," u" ......, All Rights Reserved" # 省略部分自定义内容 } }
例子:
from setuptools import setup
APP = ['main.py']
DATA_FILES = ["item.ui","mainframe.ui","adddialog.ui"]
OPTIONS = {
'argv_emulation': False,
'includes': ['shiboken2','PySide2','PySide2.QtCore', 'PySide2.QtWidgets',"PySide2.QtUiTools","PySide2.QtGui"],
}
setup(
app=APP,
data_files=DATA_FILES,
options={'py2app': OPTIONS},
setup_requires=['py2app'],
)
第二步:打包
删除之前的 dist、build文件夹
执行下面命令,打包
python3 setup.py py2app
可以看到在当前文件夹生成dist、build文件夹,test.app在dist文件夹中
这种方式打包,python环境、已经用到的第三方库都打包到一起,一般将程序放在其他的mac电脑中,可直接运行
打包模式:别名模式
为了方法测试和开发,py2app 提供了“别名模式”,没有将完整的python环境、第三方库打包到app中,也就是说运行程序,完全依赖该电脑的python环境和第三方库
python setup.py py2app -A
感谢:
https://www.jianshu.com/p/afb6b2b97ce9