直接用pyinstaller打包也可以,但是会把一些不必要的库也打包进去,尤其是在Anocanda环境下的python。所以,为了进一步压缩体积,我选择了在虚拟环境下用pyinstaller打包程序。除此之外,还有一些可以压缩体积打包的方法。(借鉴:https://www.cnblogs.com/valorchang/p/11358541.html)
1、用pipenv创建虚拟环境
(1)安装pipenv
pip install pipenv
(2)如果想创建固定版本的python虚拟环境,可以执行如下:(否则这一步可以忽略)
pipenv --python 版本号
如:
pipenv --python 3.6
(3)进入虚拟环境
(第一次进入,它会自动建立虚拟环境,所以不用额外再建立虚拟环境了)
pipenv shell
(注:建立虚拟环境需要在项目文件下的路径上建立!!!这里你可以直接按住shift键同时将鼠标放在项目文件夹上右击鼠标以进入命令行窗口,这样就可以在项目文件路径下操作了)
(4)pip install 包(对依赖的第三方库包进行安装)(安装过程是比较容易出现错误的阶段)
这里根据你的程序所用到的第三方库进行安装。安装第三方库的过程中容易出现“Read time out”这种安装失败的情况。这是因为安装包默认源自国外网站,访问慢甚至有时会中断。这里有两种方式解决该问题:
①延长timeout时间
pip install 库名 --timeout 1000
②换安装源换到国内镜像
# 以清华大学镜像为例
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 库名
常用的国内镜像:
(1)阿里云 http://mirrors.aliyun.com/pypi/simple/
(2)豆瓣http://pypi.douban.com/simple/
(3)清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
(4)中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/
(5)华中科技大学http://pypi.hustunique.com/
注:新版的Ubuntu要求使用https源
(https://www.cnblogs.com/guohongwei/p/10841025.html)
另外,安装过程中可能会出现以下错误:
这是因为sys是python的内置库不属于第三方库,所以不用安装。还有许多库不属于第三方库,如果遇到这种错误可以直接跳过该库。
在我安装multiprocessing库时,出现了以下错误:
这里是因为multiprocessing模块的安装语句错误,正确应该是:pip3 install multiprocess
如果有自己定义的库,需要把它放到项目文件夹中,一起打包。
(5)安装pyinstaller
pip install pyinstaller
(6)打包(打包过程中也会出现很多问题)
pyinstaller 文件名.py
以下列举我当时遇到的问题:
①如果在安装包的时候没有安装全,就会出现找不到某个模块。
解决:把漏掉的包安装上即可。
②Unable to find "nltk_data" when adding binary and data files
解决:https://www.jianshu.com/p/ef6e23f8e2c1
(好像还有,但是我忘记了。。。)
(7)打包完成后,有两个文件夹dist和build。其中dist中有.exe执行程序。
我当时的程序运行时出现窗口闪退情况。这时候,你可以打开cmd,进入到程序所在路径运行程序,此时,窗口上会显示错误。根据该错误再进行改正。我当时是出现以下错误:
ModuleNotFoundError: No module named 'pkg_resources.py2_warn
原因是setuptools版本过高,把setuptools降级到44.0.0以下重新打包即可。
我的在打包完成后,运行程序,出现WARNING: The configuration file does not exist.但是没有影响程序的运行,所以我就没有管它。
如果虚拟环境不用了,怎么删掉呢?
答:虚拟环境在C:\Users\Administrator\.virtualenvs中。如果你给多个程序建立了多个虚拟环境,.virtualenvs里面会有多个虚拟环境文件夹,选择你要删除的那个删掉即可。
暂时想到这些,如果大家有什么问题,可以评论,我再给大家补充(#^.^#)
如果有错误还希望大家多多指正!