py2app打包selenium自动化脚本

python+selenium写了个自动化脚本,想打包成app方便给别人用,记录下遇到的问题。

py2applet --make-setup gp.py

gp.py是我的代码文件,会生成一个setup.py文件,根据自己的需求改。
1.依赖包要加,如'packages': ['selenium', 'lxml']
2.加图标'iconfile': 'app.icns',
3.因为我用到了chromedriver,所以把chromedriver的位置写到DATA_FILES 里,不然会报Message: 'chromedriver' executable needs to be in PATH。其他依赖文件也写到DATA_FILES里。

"""
This is a setup.py script generated by py2applet

Usage:
    python setup.py py2app
"""

from setuptools import setup
import os
driver_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'chromedriver')

APP = ['gp.py']
DATA_FILES = [driver_path]
OPTIONS = {
    'argv_emulation': True,
    'iconfile': 'app.icns',
    'packages': ['selenium', 'lxml']
}

setup(
    app=APP,
    data_files=DATA_FILES,
    options={'py2app': OPTIONS},
    setup_requires=['py2app'],
)

python setup.py py2app

会生成dist和build文件夹,app在dist文件夹里。双击运行生成的app,异常退出了。

生成的app

右键单击这个app,选择显示包内容,可以看到Contents文件夹,点进去,看到如下文件。

Contents里面的内容

进到MacOS,双击运行一下gp,错误提示又来了:'chromedriver' executable may have wrong permissions。好了知道是权限问题了,找一下打包后'chromedriver' 被放哪里了。

MacOS文件夹

在前面的Resources文件夹里找到了,给他一个执行权限,好了好了完美。

sudo chmod +x ../dist/gp.app/Contents/Resources/chromedriver

Resources文件夹

你可能感兴趣的:(py2app打包selenium自动化脚本)