pyinstaller -F template.py
出现报错"AssertionError: Executable contains code signature!"
移除签名
codesign --remove-signature /Users/f7692281/PycharmProjects/TPtestlist/transmit_v6.0.py
打包命令
pyinstaller --windowed transmit_v6.0.py
pyinstaller -w -D transmit_v6.0.py
打包静态文件
在网上查找了很多资料,比如将静态文件,或是引用的图片一同打包之类的,比如修改transmit_v6.0.spec里面的datas,将ip.ini文件打包进来.然后重新再次打包transmit_v6.0.spec.datas里面放置的是元祖,元祖里面的是(文件名,文件位置)
命令:
pyinstaller transmit_v6.0.spec
打包之后的效果如图,ip.ini会出现在该位置.transmit_v6.0此时是可以运行的,但是transmit_v6.0.app还是不可以运行,因为这个app里面还是不存在ip.ini,你需要手动将其放置进去.然后就可以用了
这样打包之后,发现我打包出来的APP特别的大 ,900多M......,并且将APP传给别人的电脑上面还会显示APP已经损坏.....所以最好还是创建虚拟环境,在虚拟环境里面进行打包
创建虚拟环境步骤
1) 在某个位置创建放置虚拟环境的文件夹:env_test
2) 进入该文件夹
cd /Users/f7692281/Desktop/env_test
3) 创建虚拟环境,虚拟环境名为myenv
python -m venv myenv
4)激活虚拟环境
source myenv/bin/activate
5) 在此环境下面直接安装脚本需要的第三方库 ,用镜像安装快.它提示少什么,直接装就可以了.pyinstaller也不能少.
pip install numpy -i https://mirrors.aliyun.com/pypi/simple
pip install pandas -i https://mirrors.aliyun.com/pypi/simple
pip install openpyxl -i https://mirrors.aliyun.com/pypi/simple
pip install Jinja2 -i https://mirrors.aliyun.com/pypi/simple
pip install pyinstaller -i https://mirrors.aliyun.com/pypi/simple
6) 打包,打包时脚本要在虚拟环境里面,所以打包时直接输入脚本名字,不要用绝对路径拖进来,会报错(不知道为啥)
pyinstaller -w -D template.py
打包资源文件
将资源文件打包进入app,除了直接放置之外,我们可以直接打包spec文件.
pyinsatller filter_start.spec
app重设图片
- 首先app的图片的格式必须是.icns的,其他图片格式都会出现报错.
- 很难找到文件格式直接就是.icns的文件,所以可以直接在网上面搜索转化工具.我们可以直接下载一张png图片,让他直接转化为.icns文件.如果使用svg格式的文件转化为.icns的还是会报错.
- 转化工具地址:PNG to ICNS | CloudConvert
打包出现的异常问题
- 使用pyqt5搭建的页面,打包之后图片怎么都显示不出来
sys.path的环境变量是/Users/f7692281/PycharmProjects/filter_over_size,以filter_start为启动文件,按道理来说是可以被识别到的,但是结果就是加载不出图片文件.所以只好用下下策,直接使用绝对路径,然后可以了.