pyinstaller打包异常

报错:RecursionError: maximum recursion depth exceeded
解决:
先执行一次

pyi-makespec mytest.py

会在同目录下生成一个mytest.spec文件,编辑文件,在开头添加

import sys
sys.setrecursionlimit(10000)

保存后,对spec执行打包

pyinstaller mytest.spec

报错:UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xce in position
解决:
在命令行执行pyinstaller之前,先执行

chcp 65001

运行打包后的文件,报错:File “site-packages\pkg_resources_init_.py”, line 86, in < module >
ModuleNotFoundError: No module named 'pkg_resources.py2_warn

解决:
按图索骥,注释掉C:\ProgramData\Anaconda3\Lib\site-packages\pkg_resources\ __init__.py的86行

#__import__('pkg_resources.py2_warn')

运行打包后的文件,报错: File “C:\ProgramData\Anaconda3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py”, line 475, in get_data
with open(path, ‘rb’) as fp:
FileNotFoundError: [Errno 2] No such file or directory: ‘D:\mytest\plotly\package_data\templates\plotly.json’
[21652] Failed to execute script mytest

解决:
第三方库引用到了一些非.py、.pyc文件,这些文件在pyinstaller打包时会被忽略!上面的错误是plotly库里的一个.json文件无法找到导致的。
对于此处要这样做,进入C:\ProgramData\Anaconda3\lib\site-packages\PyInstaller\hooks,新建hook-plotly.py,编辑

from PyInstaller.utils.hooks import collect_data_files
datas = collect_data_files('plotly')

collect_data_files会让pyinstaller在打包时自动把plotly库里的非.py、.pyc文件拷贝出来

你可能感兴趣的:(python)