专否 写文章

东方不败

Oct 18, 2018
Follow

用py2app来打包python文件

py2app是在mac OS系统上打包python文件为app的;
py2exe是在windows系统上打包python文件为exe的;
pyinstaller似乎也是windows系统上的。
这些都用过,感觉还不错,就是中间老是遇到一些烦人的小问题。

今天就介绍一下py2app打包python文件
首先安装py2app

$ pip install py2app


然后创建一个setup.py(其实叫其他的名字也行)

"""
py2app build script for MyApplication
Usage:
    python setup.py py2app
"""

from setuptools import setup
setup(
    app=["MyApplication.py"],
    setup_requires=["py2app"],
)

把上面的 MyApplication.py 换成你想打包的python文件即可。
然后就生成了一个可以直接在mac上运行的app了


当然会出现一些小问题,
被打包的部分源代码如下:

import cv2.cv as cv
import sys
import cv2
import numpy as np
 
if __name__ == "__main__":
    face_cascade = cv2.CascadeClassifier('./haarcascade_frontalface_default.xml')
    eye_cascade = cv2.CascadeClassifier('./haarcascade_eye.xml')

在上面的例子里,import的库会被自动打包进去,
但是读取的两个外部的xml文件是不会被自动打包去进的。

这时,我们只要人为把这两个xml文件放进去即可,点击生成的app,显示包内容,在Contents-Resources目录下粘贴上外部文件即可。




其实这些开源工具总是会出现一些烦人的小问题,尤其是安装时,很可能会出错,然后又要花很长时间在stackoverflow上找,能找到时幸运的,有时候bird.so也帮不了。头疼啊。

就比如安装py2app时,遇到一个问题pip install py2app 理论是可以的,但是就是不成功,失败,是不是wall的问题,还是这个链就一直是断了。搜了半天也解决不了问题,最终的解决方法,请见下一篇“当pip install失败时该怎么办



喜欢这个文章 | 分享 | 新建跟帖