使用pipenv建立虚拟环境解决python打包exe文件过大的问题(附打包带图标,多个py文件打包exe)
我们编写的程序可以发给其他小伙伴使用,但是其他小伙伴不一定安装有python。这时候就需要用到打包啦。打包可以将程序打包成exe文件。然后小伙伴在windows平台里就可以运行(无需python)。直接成了一款软件。
打包一般要用到cmd命令行,要求cmd能执行python程序。
教程见链接:
cmd执行python程序,文件夹直接进入cmd程序
或者在anaconda的命令行里打包。
原始打包教程,利用anaconda
见链接:
python打包成exe 可执行文件 。教程
打包出来的文件,238M.原因是 anaconda里包含了太多我们不需要的包
一.建立虚拟环境打包
Pipenv 是一款管理虚拟环境的命令行软件,简单来讲,它可以创建一个只在某个目录下的局部 Python 环境,而这个环境是可以和全局环境脱离开的。
步骤如下:
第一步:安装 Pipenv
安装 Pipenv,,此处可以在anaconda的 Anaconda Powershell Prompt 下安装
pip install pipenv
第二步:进入虚拟环境
pipenv shell
由图中发现,进入虚拟环境前后CMD行还是有区别的,虚拟环境第二个红色圈比第一个红色圈,在前面多几个英文字母
第三步:安装依赖的库
在虚拟环境下安装 Pyinstaller 和你自己的脚本依赖的第三方库
比如我的是
pipenv install pyinstaller
pipenv install opencv-python
这一部分安装库之前忘啦截图,原谅。
第四步:查看安装的库有哪些
如果你这时候使用命令 pip list 并发现里面只有很少的库,这就说明我们成功进入虚拟环境了
虚拟环境应该可以删除库吧。指令类似pipenv uninstall 库
第五步:打包
打包之前必须先把程序复制到cmd工程目录下。
我的工程目录是C:\Users\Shineion\
打包命令有很多,如打包单一程序,多程序,带图标…。
最简单的
pyinstaller -F xx.py
结果exe在工程目录下的dist文件里
这次只有50多M,原先的238m
exe可以运行
注意事项:下次使用虚拟环境时可以直接进入,上次在虚拟环境安装的包仍然存在,无需重复安装一些包
我遇到的问题是pipenv有时无法删除库 ,有时使用pipenv uninstall 删除命令之后包还存在。。我的解决方法是删除虚拟环境,然后重新进来时发现之前安装的包没有啦。这样我们可以进行下一次自定义安装库
二.打包带图标,并且不显示控制台
控制台指打包出来类似cmd的黑色窗口。
pyinstaller -F -w -i bitbug_favicon.ico hm_004.py
-w:不显示控制台
-i:图标
结果;有图标
图标在线转换网站:
http://www.bitbug.net/
无控制台
多个py文件打包
pyinstaller -F main.py -p py_dir
原始程序
这个代码是网上借鉴别人的。自己一时懒得写代码。
cmmd.py
from time import sleepfrom hello import showdef main():count = 1while count <= 5:show(count)sleep(1)count += 1print("Bye!")if __name__ == "__main__":main()
hello.py
from word import whatdef show(nbr):res = "[ No.{} | Test: {}.]".format(nbr, what())print(res)
word.py
def what():return "Hello, Python"
打包命令:
pyinstaller -F cmmd.py -p test
结果
附录:pipenv的常见使用命令
pipenv install :创建虚拟环境
pipenv shell :进入虚拟环境(如果不存在,则创建并进入虚拟环境)
pipenv install flask: 安装模块
pipenv uninstall flask :卸载模块
pipenv graph:查看模块之间的依赖关系
pip list:查看虚拟环境所有模块
exit() :退出虚拟环境
pip freeze > requirements.txt:导出虚拟环境所有依赖包名
pip install -r requirements.txt :安装项目所依赖全部模块
pipenv uninstall --all :卸载所有包
pipenv lock:生成lockfile
pipenv --rm: 删除虚拟环境
pipenv run python xxx.py: 虚拟环境运行python
常用pyinstaller 命令
- -i 给应用程序添加图标
- -F 指定打包后只生成一个exe格式的文件
- -D –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)
- -c –console, –nowindowed 使用控制台,无界面(默认)
- -w –windowed, –noconsole 使用窗口,无控制台
- -p 添加搜索路径
如何打包资源文件见链接:
python将资源文件一起打包进exe 讲解(有算例)
sklearn模型打包讲解
python打包exe 之打包sklearn模型中的各种坑及其解决方法。
本文使用的pipenv来管理虚拟环境,还可以使用anaconda来管理虚拟环境。
anaconda虚拟环境教程大全
电气工程的计算机萌新:余登武。写博文不容易。如果你觉得本文对你有用,请点个赞支持下,谢谢。
使用pipenv建立虚拟环境解决python打包exe文件过大的问题(附打包带图标,多个py文件打包exe)相关推荐
- Pyinstaller打包python文件太大?教你三个小技巧有效减小文件体积
简介 有时候需要在未安装Python环境的平台上运行py程序,使用pyinstaller打包很方便,但打包后的可执行文件实在是太大了.原因在于打包时pyinstaller本就已经关联了很多的pytho ...
- 【Python学习笔记(二)】使用Pyinstaller将不同路径下的py文件打包成exe可执行文件
** 使用Pyinstaller将不同路径下的py文件打包成exe可执行文件 ** ** 前言 在Windows环境下需要打包一个python项目成exe可执行文件,共有一个主函数BomSoftwar ...
- Python 初学者进阶的九大技能(附代码)
授权自AI科技大本营(ID:rgznai100) 本文约4300字,建议阅读9分钟 本文为你介绍Python必须掌握的九大技能. 以下为译文: Python是一种很棒的语言,语法简单,无需在代码中搜索 ...
- xml可以打包成jar吗_国内飞机上可以带化妆品吗 坐飞机怎么打包化妆品
护肤品和化妆品已经成为大多数女性每日都会使用的物品,因此出去外地旅行或工作也是需要带上的.而飞机也是人们外出经常会选择的工具之一,那么国内飞机上可以带化妆品吗?坐飞机怎么打包化妆品呢?来看看! 国内飞 ...
- pyinstaller打包exe文件太大解决方法
pyinstaller打包exe文件太大的原因是把其它用不到的库也一起打包了,我的python用的Anoconda,本身带了很多库,代码打包后文件330MB,解决后只有29MB. 一.解决方法 解决方 ...
- from import 导入时找不到module的解决办法(Python模块包中_init_.py文件的作用)
文章目录 背景 正文 Ⅰ.报错信息 Ⅱ.问题解决 Ⅲ.问题分析 Ⅳ._init_.py文件作用 背景 最近在使用Pycharm开发python脚本时,遇到这样一个现象:打开别人给的工程,环境配置都没有 ...
- 苹果系统 python闪退怎么解决_双击py文件闪退怎么办_py文件打开闪退的解决方法...
Python文件是以.py为后缀的文件,可以用Python直接运行,但是有的朋友会发现,Python文件打不开了,点击闪退.那么双击py文件闪退怎么办呢?别急,小编现在就为大家带来py文件打开闪退的解 ...
- pyinstall将py文件打包成可执行程序exe
安装 pip install pyinstall 使用 参数 含义 -F, --onefile 打包一个单个文件,只生成一个exe文件.如果你的代码都写在一个.py文件的话,可以用这个,如果是多个.p ...
- pyinstaller 打包py文件 以及字体、图片等资源的引用
文章目录 1. 改变控制台的编码格式为utf-8 ,在控制台中输入 2. 一般打包可用 pyinstaller -F -i abc.ico xxx.py --noconsole 3. 参数如下: 4. ...
最新文章
- 把mysql 中的字符gb2312 改为gbk的方法
- 数据处理系列(四) 安装Elasticsearch用以存储和查询数据
- 10个重要问题概览Transformer全部内容
- 《麻省理工科技评论》发布2019年全球十大突破性技术!
- kubesphere3.0的安装完整文档
- SQLServer存储过程/函数加/解密(轉)
- Python为何如此优秀?斯坦福教授告诉你!
- 【289】◀▶ Python I/O 读写文本文件
- java字符串装双精度_Java 将双精度值转换为字符串
- 荣耀50样张公布:直出1亿像素 实际效果更出色
- windows控制台中文乱码解决方法
- 测试环境下将centos6.8升级到centos7的操作记录(转)
- oracle flex asm ceph,ORACLE 12C Flex ASM转换
- android的opengl教程,android opengl 教程
- wps 多级标题自定义设置
- [渝粤教育] 西南科技大学 公共人力资源管理 在线考试复习资料
- 计算机以及dos窗口常用快捷键
- EasyPR--开发详解(5)颜色定位与偏斜扭转
- 作为程序员,我到底在恐慌什么!
- oracle 的lag,LAG函数的使用
热门文章
- redis便捷启动,shell启动redis
- OpenStack——基于EXSI安装OpenStack解决方案
- Vue.js——简单计数器
- 酷Q 小i——添加应用
- 操作系统 课堂练习题01【15道 经典题目】
- JavaScript基础08-day10【函数的返回值、实参、立即执行函数、方法、全局作用域、函数作用域、提前声明、this、工厂方法创建对象、构造函数】
- Windows环境下使用Mycat模拟分库分表-读写分离案例
- CentOS 初体验四: 阿里云服务器开启8080端口
- Android 借助Stetho在Chrome上调试Android网络、数据库、Sharedpreferences
- kmp字符串查询算法