由于工作原因,我的电脑没法上传和下载文件,所以一开始选择了anaconda完成python的工作。使用了pyinstaller将脚本生成可执行文件。但是生成出来的exe巨大无比(一个简单的脚本300多M,要花两分钟时间打开),于是开始查资料找原因。
最后定位问题:在生成可执行文件时,python工作在anaconda的环境下,anaconda的库非常的全面,我们一个小项目里面用不到所有的包,但是pyinstaller在打包的时候不管你用不用,都给你打包进去了,从而打包后文件内包含了太多不需要的依赖库,导致可执行文件过大。
网上还有说用 pyinstaller -D xxx可以解决问题,但是我试过了,-D得到的依然是一个巨大的exe可执行文件。
要解决这个问题也很简单,建立一个虚拟环境,然后让我们的项目工作在这个虚拟环境中。项目中所需要的包则安装在这个虚拟环境的site-package内。
建立虚拟环境的办法有很多,我是用pycharm实现的,具体流程如下:
File >> New Project>> New environment using Virtualenv
选择好项目路径,以及解释器,虚拟环境就建立在当前项目目录下。
创建项目成功后,venv就是存放的我们刚刚创建的虚拟环境。
这样子虚拟环境就建立好了,接下来就是安装我们需要用到的依赖包了。联网情况下就不说了,有网络啥事都好办,这里说一下没网络的情况下怎么在虚拟环境下安装依赖包。
- 首先我们要有依赖包离线安装包(以whl文件为例)
- 然后打开windows cmd控制台进入虚拟环境的Scripts目录下(如D:\projects\demo\venv\Scripts)。
然后输入命令 activate,此时cmd控制台的前面会出现一个(venv),此时就说明你已经进入了你创建的虚拟环境下了。 - 之后在这个环境下执行 pip install
xxxx.whl(你放离线安装包的路径),此时依赖包就被安装到当前所在虚拟环境的site-packages下了,可以进入D:\projects\demo\venv\Lib\site-packages下查看。 - 有些依赖包安装时还需要提前装好其他的依赖包,反正如果少装了,最后都会报error,根据error的提示再把缺少的依赖包装上去就可以了。