最近接手了一个任务,是修复一个已经离职了的同事的python代码BUG,代码修改好以后还需要打包成exe。

pipenv虚拟环境

pipenv 安装很简单,pip install pipenv
然后新建一个文件夹,把py项目拷进去,命令行cd到当前目录下运行pipenv install,就可以构建好虚拟环境了。
接下来就是安装项目所需要的模块
pipenv install <mode>
然后问题来了(该虚拟环境所需模块已经安装完毕,只是举个栗子):
在pipenv虚拟环境下使用pipinstaller打包项目
安装以后写Lock文件失败,提示找不到模块,让我们确认是否能够连接源地址。
如果各位也出现了这种问题,可以尝试切换源[参考文章:切换源]
然后我切换了清华的、豆瓣的、阿里的,都装不上这个模块╮(╯▽╰)╭

既然正常导入模块失败了,那我们只能试试骚操作了。
首先使用pipreqs生成项目的requirements.txt[参考文章:pipreqs使用方法]
接下来就是pipenv安装依赖了,如果还没有新建虚拟环境,那么把py项目和requirements.txt一同拷贝到准备安装虚拟环境的目录下,再执行pipenv install
在pipenv虚拟环境下使用pipinstaller打包项目
pipenv会发现依赖文件并安装。

如果已经安装好虚拟环境了,那么可以使用命令来安装依赖pipenv install -r requirements.txt

希望可以帮到切换源也无法安装模块的小伙伴们

pyinstaller

[参考文章:pyinstaller打包项目]
安装pyinstaller : pip install pyinstaller
打包项目文件:pyinstaller -F <入口.py> --hidden-import <模块1>.py --hidden-import <模块2>.py
注:参考文章中使用了-i参数用来忽略错误,但是我使用的时候添加了这个参数会报错无法打包,去掉了就可以正常使用,各位小伙伴使用的时候可以注意一下。

最后我打出来的包有80+M,离职的同事打出来的包只有14M,我不禁陷入了沉思。。。日后有机会解决打包后文件过大的问题后再来更新吧

解决pyinstaller打包项目文件过大

[参考文章:解决pyinstaller打包文件过大]
如果本机安装了很多模块,使用pyinstaller的时候就会把已安装的模块都打包进去,因此要结合pipenv,在pipenv的虚拟环境里面安装pyinstaller,使用pipenv里面的pyinstaller打包,项目文件的体积就下来了。

相关文章: