报错: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文件拷贝出来