美文网首页Shell-Python
【python】打包成MAC APP

【python】打包成MAC APP

作者: 地主家有30头牛 | 来源:发表于2022-03-18 13:24 被阅读0次

写了一个python小程序,想打包成可执行的APP,看网上写的教程很简单,大概就是下面这个样子。

1.生成setup.py文件

#main.py就是你实际工程里的主执行程序,我的叫main.py
py2applet –make-setup main.py  

生成的默认setup.py内容如下:

屏幕快照 2022-03-19 下午12.57.47 下午.jpeg

2.打包

#-A参数不会打包依赖库等,这样打包的程序(下称本地APP)只能在本机或者跟你本机配置一模一样的环境执行,一般要去掉,以保证在任何环境可以正常执行
python3 setup.py py2app -A

执行后会生成一个build和dist文件夹,dist下的main.app就是生成的可执行程序,双击即可运行。
但实际上,稍稍复杂一点的工程按照默认的setup.py打包,执行的时候都是会出错的。
原本的设想是会把工程包按原本的目录结构全部打包,但实际上需要用到的图片,音源,文本等等,在执行的时候都会报错找不到,因为都是要手动配置到setup.py里才能被打包。

如果不知道自己的APP为什么会报错,可用以下命令执行APP,就可以看到报错信息:

main.app/Contents/MacOS/main

所以需要修改setup.py如下:

DATA_FILES = []
OPTIONS = {
    #指定要打包的第三方库
    'includes': ['pygame'],
    #指定APP里用到的图片,音效,文件等,
    #可以指定文件夹,或是具体的文件
    #指定文件夹就会把整个文件夹都打包
    #这些内容如果放在上面的DATA_FILES里,也可以达到同等效果
    'resources': ['resources'],
    #APP执行时显示的图标,icns是MAC图标的标准文件
    'iconfile': 'LOGO.icns',
    #有待研究,暂时只设定了版本号
    'plist': {'CFBundleShortVersionsString':'0.1.0'}
    }

具体的参数解释:官方文档
icns的生成参考:【MAC】生成MAC APP图标icns

================================

追加一个打包后运行时遇到的一个让我解决了很久的问题。
报错信息如下:

ImportError: dlopen(/Users/chen/Documents/workspace/minesweeper/dist/main.app/Contents/Resources/lib/python3.9/lib-dynload/_ctypes.so, 2): Library not loaded: @rpath/libffi.8.dylib
  Referenced from: /Users/chen/Documents/workspace/minesweeper/dist/main.app/Contents/Resources/lib/python3.9/lib-dynload/_ctypes.so
  Reason: image not found

查了很多信息,应该是动态链接库的问题,当你的依赖库里又去引用另一个库的时候,会出现这种找不到的情况。但是网上的解决办法我都没有试成功,尤其我要保证我的APP去了任何一台机器都可以直接运行。所以最后尝试了最傻的办法。就是直接把这个找不到的库打包进我的APP,虽然这个libffi.8.dylib应该是一个shared lib.

所以修改setup.py文件里追加如下设置:

'frameworks': [ '/Users/chen/mambaforge/lib/libffi.8.dylib'],

重新打包后,libffi.8.dylib就会自动出现在Frameworks下面,本机双机运行正常,直接传到其它机器运行也正常了。

相关文章

  • Python 打包成mac app

    以前都在Win机器打包,Mac还是有点区别,记录一下 一、创建一个简单的Tkinter应用,并命名为Sandwic...

  • Python程序打包成Mac应用

    在window下python程序可以用py2exe打包成应用程序, mac下也有相应的工具叫做py2app.原理是...

  • python打包成可执行文件app

    1.mac程序打包成app 有两个方案一个 pyinstaller 已经测试过了。没有打包成功。py2app可以成...

  • python开发app

    都说python强大,写了一阵子python代码,都是打包成exe程序来玩;今想打包成app来玩下,可又不可能重新...

  • pyinstaller 使用过程中的小问题

    背景 mac 电脑 希望将python文件打包成可执行文件 问题 执行pyinstaller -F **.py后 ...

  • Mac App 打包成dmg

    先把开发的Mac App打包成xxx.app 安装create-dmg 安装成功后,可以用下面指令查看详细信息 c...

  • Python GUI项目实战(九)项目总结

    一、程序打包成可执行文件 1. 程序打包成Mac上的程序(单py文件) 使用pip3 install py2app...

  • Mac: 将APP打包成dmg

    创建一个新的文件夹,将APP放到这个新文件夹中 打开Disk Utility > File > New Image...

  • python打包成可执行文件

    Mac打包成app 安装 进入需要打包的py文件的目录(login_pane.py 代表需要打包的文件) 执行上述...

  • Pyinstaller新手向导

    用python写了一个小程序,考虑到给到windows用户方便使用,就想着打包成exe。于是搜索了下python打...

网友评论

    本文标题:【python】打包成MAC APP

    本文链接:https://www.haomeiwen.com/subject/jabgdrtx.html