pyinstaller 打包python项目报错总结

1. 由于主项目A.py调用 ./codes/b.py 和c.py 作为模块,导致报错,找不到 b 和 c (A.py 和codes 在同一文件夹下)

主程序A.py原来调用命令为:

from codes import *

修改为:

import sys

sys.path.append('./codes')

import b

import c

运行

pyinstaller -p ./codes/ A.py

2. 运行dist中A,继续报错:

找不到 typedefs 模块,修改:

pyinstaller -p ./codes/ prPred.py --hidden-import sklearn.neighbors.typedefs

3. 运行dist中A,继续报错:

libmkl_intel_thread.so: undefined symbol: omp_get_num_procs

找到libiomp5.so所在路径,修改:

pyinstaller -p ./codes/ prPred.py --hidden-import sklearn.neighbors.typedefs --add-binary "/xxx/xxxx/xxxx/lib/libiomp5.so:."

4. 继续报错

参考(https://blog.csdn.net/Iv_zzy/article/details/107462210?utm_medium=distribute.pc_relevant_bbs_down.none-task--2~all~first_rank_v2~rank_v28-2.nonecase&depth_1-utm_source=distribute.pc_relevant_bbs_down.none-task--2~all~first_rank_v2~rank_v28-2.nonecase)

(https://blog.csdn.net/m0_37477175/article/details/82146996)

找不到调用的外部csv文件,本项目中是A.py 调用codes文件夹中的b.py 和c.py, 而b.py 调用model文件夹中的c.csv,c.py 调用model文件夹中的d.csv,修改b.py为:

cur_path = os.path.abspath(__file__)

parent_path = os.path.abspath(os.path.dirname(cur_path) + os.path.sep +"..")

c_path = os.path.join(parent_path,'model/c.csv') ##model和codes 在同一文件夹中

x = pd.read_csv(c_path,index_col=0,header=0)

c.py 修改类似

同时将model 放入dist 的A 的执行程序的上层中,确保打包的dist中的A 可以找到model

将dist中A放入环境变量,运行。


解决使用pyinstaller打包报错: RecursionError: maximum recursion depth exceeded

参考 https://blog.csdn.net/weixin_44128511/article/details/95372044

在*.spec文件中增加两行(添加在原文件第二行),对递归深度进行设置:

import sys

sys.setrecursionlimit(100000)

执行

pyinstaller  *.spec

你可能感兴趣的:(pyinstaller 打包python项目报错总结)