PyInstaller 打包 xgboost算法包等可能出现问题

时间:2024-04-11 18:37:39

工作中,需要打包大数据xgboost算法包,出现以下问题缺失.dll文件

  1. 在没有git工具的情况下可以上github   https://github.com/dmlc/xgboost 下载源码

PyInstaller 打包 xgboost算法包等可能出现问题

  1. 下好源码 进入python-package包中的xgboost核心算法包

PyInstaller 打包 xgboost算法包等可能出现问题

PyInstaller 打包 xgboost算法包等可能出现问题

  1. 然后 下载http://ssl.picnet.com.au/xgboost/20180217/x64/xgboost.dll 到xgboost算法包里面,如下所示

PyInstaller 打包 xgboost算法包等可能出现问题

 

  1. pyinstaller -D ***.py,把处理好的xgboost算法包放入生成.exe的文件夹PyInstaller 打包 xgboost算法包等可能出现问题

问题二:之前打包没问题,后来出现以下问题

我的python代码中有 

import pandas 

使用pyinstaller进行打包exe的时候出现以下问题,现在就来说一下。 
打包的时候没有报错, 

但是执行时候首先报了pandas的错。提示没有找到pandas._lilbs.tslibs.np_datetime。大概的错误如下: 

第一个错误是: 

Fi1e sitepackagesp\pandas\init .py 1ine 35 in Kmodule?

importError c extension: No module named np_datetine not buit. Jf you yant to import pandas from. the source drectory

g you may need to run python setup. py buildext inplace force to bui1d the c extensions first:

iFai1ed to execute script smg



通过网上查找的方法,修改下pyinstaller的用法,生成过程中添加--hiddenimport=pandas._libs.tslibs.np_datetime,代码如下 

pyinstaller -F -w smg.py  --hiddenimport=pandas._libs.tslibs.np_datetime 

继续打包,过程中没有报错,继续执行exe文件的时候报错如下 

第二个错误: 
Fi1e sitepackagesp\pandas\init .py 1ine 35 in Kmodule?

Fi1e sitepackagesp\pandas\init .py 1ine 35 in Kmodule?

importError c extension: No module named timedeltas not buit. Jf you yant to import pandas from. the source drectory

g you may need to run python setup. py buildext inplace force to bui1d the c extensions first:

iFai1ed to execute script smg


郁闷了又出现了新的错误信息。。。。。 
卸载pyinstaller重新安装还是不行 
继续网上搜索: 
原因是pandas是c源码,而pyInstaller找不到pandas的代码,就算你是-p /lib/site-packages还是不行。 
解决方法: 
在./Lib/site-packages/PyInstaller/hooks下,新建一个文件名为hook-pandas.py。写入以下内容并保存。 

hiddenimports = ['pandas._libs.tslibs.timedeltas', 
'pandas._libs.tslibs.nattype', 
'pandas._libs.tslibs.np_datetime', 
'pandas._libs.skiplist'] 

问题三:可能scipy也出现问题,可以尝试  在后面加--hidden-import scipy._lib.messagestream
按照上面的步骤操作,然后继续打包,最终成功运行了exe文件