py2app-python打包工具

介绍

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


原文出处:/show_1EF6ClsZ5L4P.html