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文件夹里找到了,给他一个执行权限,好了好了完美。
Resources文件夹sudo chmod +x ../dist/gp.app/Contents/Resources/chromedriver
网友评论