问题描述
最近需要使用pyinstaller打包exe,结果exe生成以后打开出现下述问题,importerror:dll找不到指定的模块。从报错来看都是pandas模块
本人环境:win11,conda 22.9.0,python3.9,pyinstaller=6.10.0,pandas=2.2.2
Traceback (most recent call last):
File "encode.py", line 1, in <module>
File "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_module
File "pandas\__init__.py", line 77, in <module>
File "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_module
File "pandas\core\api.py", line 47, in <module>
File "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_module
File "pandas\core\groupby\__init__.py", line 1, in <module>
File "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_module
File "pandas\core\groupby\generic.py", line 68, in <module>
File "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_module
File "pandas\core\frame.py", line 149, in <module>
File "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_module
File "pandas\core\generic.py", line 193, in <module>
File "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_module
File "pandas\core\window\__init__.py", line 1, in <module>
File "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_module
File "pandas\core\window\ewm.py", line 11, in <module>
ImportError: DLL load failed while importing aggregations: 找不到指定的模块。
遂从网上找各种方法,尝试以下方法后都没用。
- 在.spec文件中编辑pathex=[‘D:\anaconda\envs\shuiwu\Lib\site-packages’]
- hiddenimports=['pandas'],hookspath=[‘D:\anaconda\envs\encode\Lib\site-packages\pandas’], encode为虚拟环境名
- a.datas += Tree("D:\anaconda\envs\encode\Lib\site-packages\pandas", prefix="pandas")
解决方法
将虚拟环境中的pandas文件夹直接拷贝到项目下,再运行pyinstaller,一次成功!
希望能对其他遇到该问题的小伙伴有帮助,注意看运行时的报错,找不到的模块就去虚拟环境下把那个包拷贝到项目下,在打包就没问题了。