windows中python打包后运行闪退:引用的其他软件包如xlrd、xlwt没有一起打包的问题

        最近有个事情需要处理数据生成几十个excel表格,一开始想着用c++来写代码做处理,后来发现c++对excel表格的使用并不是很友好,所以就临时学习一下python,通过网上的例子和代码边做边学。

        最后在自己的编译器pycharm里成功运行解决问题后,别人也要用,但是别人电脑没python环境,想着就打包一下子,就出现问题了,打包的时候在windows上总是打包成功(打包的时候并不会检查是否有问题),但是运行出问题,原因就是使用到处理excel的xlrd和xlwt没一起打包进行。

        因为代码一开始是在mac电脑上写的,然后复制到windows电脑里进行打包的,打包用的是pyinstaller,这个大家可以自己去搜一下怎么下载使用,我也是在cmd里进行下载了,也在pycharm里的软件包当中进行下载了,这样在pycharm里的终端和cmd当中都可以打包。

然后打包大家都知道的,就不复述了,关键是有个问题,大家在新建项目的时候环境设置是否有问题,我是设置Virtualenv的环境到项目里,所以目录里才有venv,我下载的包xlrd和xlwt也是在项目里。如图:

windows中python打包后运行闪退:引用的其他软件包如xlrd、xlwt没有一起打包的问题_第1张图片

解释器也不一样,上面那个是设置到项目里,下面那个是设置到python里,如图:

windows中python打包后运行闪退:引用的其他软件包如xlrd、xlwt没有一起打包的问题_第2张图片

 

所以就导致可能我的python那里没有这个包!!

那么去哪里找我们的python去哪里看python环境里是否有我们下载的包咧

        在win+R打开cmd,然后输入where python会有地址(如我的是:C:\Users\xx\AppData\Local\Programs\Python\Python310\),然后找到这个目录下面的C:\Users\xx\AppData\Local\Programs\Python\Python310\Lib\site-packages,去这个文件夹里看看你是否有你需要引入的包,我推荐是在项目设置的时候环境就不要去改,我就是因为改了导致这个site-packages里没有我需要引入的包。

        解决办法就是你把项目里,如上图当中的那个site-packages的文件夹替换到python里的那个文件夹,当然你也可以只复制文件夹里的部分内容(一定要复制全),再次打包就可以解决这个问题。

        后面打包成功的时候我的test.spec文件里没有更改任何东西,所以应该不关这个文件的问题,但是后面我需要用到外部的数据源excel文件,我还是在这个文件里进行了更改,可以把外部数据源文件一起打包进去,如下图:

windows中python打包后运行闪退:引用的其他软件包如xlrd、xlwt没有一起打包的问题_第3张图片         这时候打包一定要注意了,要使用pyinstaller xxx.spec ,如我图片里的(这里的"."代表的是该文件夹下,你也可设置其他路径),这时候你去dist里面就可以看到把这个文件一起打包进去了,至于这个怎么来的,你先打包一次用pyinstaller xxx.py打包一次就有了。

        正常使用中我们是不需要管spec文件的,但是下面几种情况需要修改spec文件:

  • 需要打包资源文件;
  • 需要include一些PyInstaller不知道的库;
  • 为可执行文件添加run-time 选项;
  • 多程序打包。

        后面将这个小程序在mac上进行打包的时候,又发现了其他的问题,就是打包后一直说找不到我xls文件,但是一样的代码在windows里却是可以正常跑的,这个在我的另一个文章里会写。

你可能感兴趣的:(python,pycharm,python)