py2exe打包Geopandas、Pandas、Fiona、Requests、Openpyxl并发布为exe程序问题解决方案(持续更新)

自己写脚本打包的时候选择了py2exe这个包,使用过程真的是没少出问题,搜索网上处理方式也只能处理部分报错,剩下的一下还要自己去测试摸索解决办法,总结了一部分经验分享出来,欢迎留言建议。

一、打包环境

系统:Windows7_64位、Windows10_64位;         Python:2.7_64位;

其他情况可以参考使用。

二、常见问题

1、py2exe打包过程中因缺失DLL类报错

DLL类报错一般是打包过程中缺失部分动态链接库,这个问题还比较好解决,直接去网上下载对应的DLL,放在要生成文件的根目录下(如下图),放上自用的DLL下载地址(https://cn.dll-files.com/)。

2、Pandas中ImportError: No module named skiplist;

     Requests中ImportError: No module named ordered_dict

打包时出现“ImportError: No module named skiplist”错误,意思是在pandas模块目录中没有找到skiplist,但是打开发现目录中是存在skiplist.pyd的。因此,手动修改打包程序如下图。同理,缺失ordered_dict也参考下图设置即可。

#-*- coding:utf-8 -*-

import distutils
import py2exe
import glob

includes=['pandas._libs.skiplist']    #缺失的skiplist模块

distutils.core.setup(windows=['XXXX.py'],
                     options={'py2exe':{'includes':includes}})    #打包时强制引入该模块

3、ImportError: No module named _shim、No module named schema

这个和第二项同样处理,将includes加入“fiona_shim”、“fiona.schema”模块,如下:

includes=['pandas._libs.skiplist','fiona._shim','fiona.schema']

4、“钉子户”模块:enum

在打包时,根据提示安装缺失的模块包,确认安装无误,确还是会报缺少该部分模块。这种情况下没办法,只能强制把几位“钉子户”拉进来了,同样使用第二项处理(前提你已经确认安装了)。

5、运行EXE直接报错:StopIteration

遇到该错误可以直接将geopandas模块路径(如:D:\Program Files\你的安装路径\Lib\site-packages\geopandas)里“__init__.py”第10行“import geopandas.datasets”给注释掉。

6、打包openpyxl模块时,ImportError: No module named geometry

我在安装openpyxl、jdcal、et-xmlfile模块时,下载的tar.gz压缩包,没有按照步骤安装,而是直接解压扔进site-packages目录中导致出现该问题。解决方法,删掉没正确安装的包,解压后文件夹中有setup.py,直接在地址栏输入cmd并回车,命令行中使用(python setup.py install)正常安装。重新打包,该问题即可解决。

7、pandas模块报错:'module' object has no attribute 'compat'

Traceback (most recent call last):
          File "pandas\__init__.pyc", line 42, in <module>
          File "pandas\core\api.pyc", line 26, in <module>
          File "pandas\core\groupby\__init__.pyc", line 1, in <module>
          File "pandas\core\groupby\groupby.pyc", line 20, in <module>
       AttributeError: 'module' object has no attribute 'compat'

解决方法:修改“site-packages/pandas/core/groupby”下的“groupby.py”第20行,将“import pandas.compat as compat”改成“from pandas import compat”。

8、WindowsError: [Error 193] %1 不是有效的 Win32

Traceback (most recent call last):
           File "CT4Shape_MP.py", line 7, in <module>
           File "geopandas\__init__.pyc", line 1, in <module>
           File "geopandas\geoseries.pyc", line 8, in <module>
           File "shapely\geometry\__init__.pyc", line 4, in <module>
           File "shapely\geometry\base.pyc", line 17, in <module>
           File "shapely\coords.pyc", line 8, in <module>
           File "shapely\geos.pyc", line 122, in <module>
           File "ctypes\__init__.pyc", line 365, in __init__
        WindowsError: [Error 193] %1 不是有效的 Win32

引起该问题是由于py2exe打包时,“geos_c.dll”不能兼容引起,可以在链接(https://cn.dll-files.com/geos_c.dll.html)中找到该dll,下载后覆盖即可。

9、其他待补充。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值