服了!pyinstaller 打包遇到的Fiona、GDAL问题,无语

前言

最近一直在搞一个应用cartopy库画地图的事情,我用的python3.8,各种库都装好了,代码也敲了,eclipse上运行也没问题,但是,没想到啊,我想把目前的程序打包的时候就遇到了问题。无语的问题!

第一个问题:pyinstaller

用pip install pyinstaller 安装好的是5.1版本,然后用pyinstaller -w -i "my.ico" xxxx.py进行打包,打包的应用程序一点开启动就报错退出了,报错提示也看不到,后来就找啊找,解决办法就是pyinstaller包降版本,我把它降到4.8版本,诶,打包的应用程序可以点开了,大部分功能都是可以运行的,欣喜若狂啊当时,以为就完事了。没想到啊没想到,恶魔还在后头。

第二个问题:cartopy的无语bug

当我把打包好的应用程序点击到绘制地图的时候问题来了,绘制世界地图非常完美,绘制中国地图,省市县地图就崩溃了,自动退出了。

首先我想对比以下世界地图和中国地图的代码,发现应用的库没什么区别啊,问题出现在了哪里呢?

接着,我又想到了try。。。except函数,看他报错到底是什么?非常意外!说我的读取shp文件的时候shapereader.Reader(self.land110_dir,bbox=mybox)中多了bbox参数,我查看了Reader的源代码,命名可以有这个个bbox参数的,不管了,先取消,然后再打包。结果果然是可以运行了,但是新的错误提示由出现了,在shapereader读取mapinfo的tab表时,它不识别tab表,读不了。

这不能啊,cartopy读矢量数据不是用的fiona吗,fiona官网都说了可以读取包括tab的各种矢量数据的。

最后,我又开始瞎碰,我觉得吧可能是fiona的问题,看了一下fiona的版本是1.9.2,这可能是安装某个库时自动安装的,为啥?因为我在https://www.lfd.uci.edu/~gohlke/pythonlibs/#geopandas这个网站上下载并保存到我电脑里的明明是Fiona-1.8.21-cp38-cp38-win_amd64.whl,所以我卸载了1.9.2准备安装这个1.8.21,当我重新安装fiona时安装不了,提示没有匹配版本的的GDAL?

看了下我的版本gdal是3.3.3,而fiona1.8.21要匹配的是gdal3.4.3的版本,于是又卸载了gdal3.3.3,下载了3.4.3版本并重新安装,一切就都OK了!用pyinstaller打包运行没有任何问题!

我就搞不懂了GDAL3.3.3和3.4.3都是cp38的,为啥3.3.3就不能用,或许3.4.3是修复了这个bug吧。

结论:gdal版本很重要,python3.8的用gdal3.4.3才行,最后上一张结果图。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值