一、问题,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