pyinstaller打包exe,无法包含pandas、numpy解决办法

背景:

需要将一个python项目打包成一个exe可执行文件,方便在windows下执行。

遇到问题:

在使用pyinstaller打包代码时,发现基础包能打包进去,但是pandas、numpy等包无法成功打包进去。

尝试的解决办法:

1)、修改spec文件
我们先用正常方法打包一遍py文件,之后会自动生成.spec后缀的文件,我们需要用文本编辑器对spec文件进行更改,好让pyinstaller能正常引用到pandas库:在spec文件内,定义一个方法来取得pandas文件路径:

def get_pandas_path():
    import pandas
    pandas_path = pandas.__path__[0]
    return pandas_path

同时需在a=Analysis这部分代码段下添加以下代码:

dict_tree = Tree(get_pandas_path(), prefix='pandas', excludes=["*.pyc"])
a.datas += dict_tree
a.binaries = filter(lambda x: 'pandas' not in x[0], a.binaries)

修改完成后,再次执行pyinstaller XXX.spec --onefile
注:该方法尝试过,没有成功
2)、打包命令添加参数。
比如,打包的时候需要pandas,可以修改执行命令添加参数

pyinstaller -F --hidden-import pandas
                      --hidden-import="pandas._libs.tslibs.timedeltas"
                      --hidden-import="pandas._libs.tslibs.np_datetime"
                      --hidden-import="pandas._libs.tslibs.nattype"
                       --hidden-import="pandas._libs.skiplist" 
                      XXXX.py(自己的文件)

有人成功,但是我没成功

最终解决办法:

修改spec文件,在Analysis中的hiddenimports添加需要导入的包。
比如我的是pandas和numpy在直接打包时没有打包进去,就可以修改为如下:

hiddenimports=['pandas','matplotlib.pyplot','numpy']

然后重新执行pyinstaller XXX.spec --onefile即可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容