一、问题,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 <module>
  File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module
  File "geopandas\__init__.py", line 1, in <module>
  File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module
  File "geopandas\_config.py", line 109, in <module>
  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 <module>
  File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module
  File "pyproj\__init__.py", line 63, in <module>
  File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module
  File "pyproj\network.py", line 10, in <module>
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"命令查看打包后包含的文件

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

 发现"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

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐