对打包问题进行了整理,以防文章链接遗失,新增个别打包问题
大部分问题解决的办法出自此处:https://guangmujun.cn/archives/168
https://blog.csdn.net/this_is_id/article/details/105214856
感谢以上两位作者,分享实际解决问题方法。
1、shapely库相关:
问题
Unable to find "e:\github\forexe\venv\lib\site-packages\shapely\DLLs\geos.dll" when adding binary and data files.
办法:在shapely库文件目录下,找到geos_c.dll文件,将其复制一份重命名为geos.dll
2、pyproj库相关
问题
ModuleNotFoundError: No module named 'pyproj._datadir'
办法:
pyproj库的安装有问题,到官网 https://www.lfd.uci.edu/~gohlke/pythonlibs/下载对应的包重新安装即可。
例如我用的window系统64位python3.6,则下载pyproj‑2.1.3‑cp36‑cp36m‑win_amd64.whl到项目文件夹,使用命令
pip install pyproj‑2.1.3‑cp36‑cp36m‑win_amd64.whl
即可正确安装pyproj库
更新:
如果重新安装库后,仍出现上述问题,提示缺少pyproj._datadir或pyproj.datadir,则将缺少的模块加入到hiddenimports中,如下:
hiddenimports=['pyproj._datadir','pyproj.datadir'
重新编译spec文件,即可解决
3、numpy相关
问题:
ModuleNotFoundError: No module named 'numpy.random.common'
两个解决方法
方法一:(推荐)
在打包生成的spec文件中,在hiddenimports参数中添加如下内容:
hiddenimports=['numpy.random.common','numpy.random.bounded_integers','numpy.random.entropy']
方法二:
在使用到numpy库的py文件中,加入下述内容
import numpy.random.common
import numpy.random.bounded_integers
import numpy.random.entropy
4、sklearn相关
ModuleNotFoundError: No module named 'sklearn.utils._cython_blas'
解决:
在打包生成的spec文件中,在hiddenimports参数中添加如下内容:
hiddenimports=['sklearn.utils._cython_blas','cython', 'sklearn', 'sklearn.ensemble','sklearn.neighbors.typedefs','sklearn.neighbors.quad_tree','sklearn.tree._utils','scipy._lib.messagestream']
5、geopandas库相关
问题:
File "site-packages\geopandas\datasets\__init__.py", line 7, in <module>
StopIteration
[6764] Failed to execute script application
解决:
找到geopandas库文件下的__init__.py
,将import geopandas.datasets
这句注释掉
6、rtree库相关
pyinstaller -D -c^
--add-data="data;data" ^
--add-data="D:\Python\Python37\Lib\site-packages\rtree\spatialindex_c.dll;." ^
--add-data="D:\Python\Python37\Lib\site-packages\rtree\spatialindex-64.dll;." ^
--icon=favicon.ico ^
--distpath=exe ^
roadAllProcess.py
-w
:窗口程序,-c
为控制台程序--add-data
:添加依赖的数据^
:cmd中的换行符--distpath
:输出目录,默认为dist
7、fiona库相关
问题:
File "site-packages\fiona\collection.py", line 9, in <module>
ImportError: DLL load failed: 找不到指定的模块。
解决办法:
from osgeo import ogr
from osgeo import gdal
from fiona import _shim, schema