python打包的exe文件运行时出现DLL load failed找不到DLL

一、问题,python开发的py代码文件通过"pyinstaller -c  -F .\test.py"命令打包后在windows控制台(cmd.exe)运行报如下错误

D:\python\test>test.exe
Traceback (most recent call last):
  File "test.py", line 7, in 
  File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module
  File "geopandas\__init__.py", line 1, in 
  File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module
  File "geopandas\_config.py", line 109, in 
  File "geopandas\_config.py", line 95, in _default_use_pygeos
  File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module
  File "geopandas\_compat.py", line 9, in 
  File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module
  File "pyproj\__init__.py", line 63, in 
  File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module
  File "pyproj\network.py", line 10, in 
ImportError: DLL load failed while importing _network: 找不到指定的模块。
[11784] Failed to execute script 'test' due to unhandled exception!

二、分析,根据运行错误信息应该是"pyproj"组件中的DLL在打包成EXE文件时没有打包进去,通过"pyinstaller -c -D  .\test.py"命令查看打包后包含的文件

python打包的exe文件运行时出现DLL load failed找不到DLL_第1张图片

 和Anaconda3\Lib\site-packages安装目录对比

python打包的exe文件运行时出现DLL load failed找不到DLL_第2张图片

 发现"pyproj"组件的pyproj.libs目录中的dll文件果然没有打包进去

三、解决,修改打包命令为pyinstaller -c -F .\test.py --add-data="pyproj.libs\\*;."将pyproj.libs目录中所有文件附加进来,问题解决。记录下以后python打包的exe文件运行时出现DLL load failed可以尝试参照上面思路解决。

参考资料

python pyinstaller --add-data 选项 打包额外资源_pyinstaller添加资源文件_whatday的博客-CSDN博客

Python ---- pyInstaller 的常用打包命令 (dtmao.cc)

pypi | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

你可能感兴趣的:(python)