Pyinstaller+Pipenv打包Python文件的实现示例
作者:Dream丶Killer 发布时间:2021-06-11 01:49:51
相信大家都试过将Python文件进行打包,来发给其他没有安装Python环境的用户使用,但通常情况下,打包生成的exe文件都很大,而产生这种情况的原因就是,打包并不会只打包我们所使用的一些库,在我们日常使用的环境中,可能会有很多没有用的关联库被一起打包。这时,创建一个虚拟环境就是最好的选择,然后在虚拟环境中进行打包。
安装pipnev
pipenv
用来管理虚拟环境,先安装一下 pipenv
。
pip install pipenv
使用 pip show pipenv
检查是否安装成功。
前期准备
创建一个文件夹,来保存虚拟环境相关文件,并cd
进入该文件夹下。
创建虚拟环境
pipenv install
进入虚拟环境
pipenv shell
安装项目用到的库
pip install pandas
如果数量比较多的话,可以新建一个requirements.txt
文件来保存需要的库名,一起下载。
再在虚拟环境中运行下面代码,记得修改requirements.txt
文件路径,这里添加了阿里镜像速度要快些。
pip install -r D:\requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
在虚拟环境中安装pyinstaller
这一步至关重要,如果没有在虚拟环境中安装pyinstaller
的直接打包的话,会使用默认python
环境的pyinstaller
进行打包,那么,恭喜你前面都白做了。
pip install pyinstaller
使用pyinstaller打包
pyinstaller打包有不少可选参数,可以根据自己的需要进行添加。
-F:打包单个文件,产生一个文件用于部署(默认),如果代码都写在一个 .py
文件时使用,项目有多个文件时不要使用
pyinstaller -F xxx.py
-D:打包多个文件,产生一个目录用于部署(默认),用于框架编写的代码打包
pyinstaller -D xxx.py(项目入口文件)
–key=keys:使用 keys
进行加密打包
pyinstaller --key=123456 -F xxx.py
-d:产生
debug
版本的可执行文件-p:用来添加程序所用到的包的所在位置,设置导入路径,可以用
;
( Linux 使用:
)分割来指定多个目录。-w:表示不用控制台窗口,使用 Windows 子系统执行,当程序启动的时候不会打开命令行(只对 Windows 有效)
-c:表示打开控制台窗口,使用控制台子系统执行,当程序启动的时候会打开命令行(默认)(只对 Windows 有效)
-i:将 file.ico 添加为可执行文件的资源,改变程序的图标(只对 Windows 系统有效)
下面是我打包时用的代码。
./1.ico
:exe文件图标路径./test.py
:代码路径
pyinstaller -F -w -i ./1.ico ./test.py
运行完之后,可执行文件在dist
文件夹下。
下面是两种情况下打包的对比,可以看到在虚拟环境中打包生成的可执行文件要小很多。
当然我们虚拟环境用完了之后,如果想要删除虚拟环境,可以
pipenv --rm 删除虚拟环境
这里再给出一些pipenv
的常用操作
pipenv --where 列出本地工程路径
pipenv --venv 列出虚拟环境路径
pipenv --py 列出虚拟环境的Python可执行文件
pipenv install 创建虚拟环境
pipenv isntall [moduel] 安装包
pipenv install [moduel] --dev 安装包到开发环境
pipenv uninstall [module] 卸载包
pipenv uninstall --all 卸载所有包
pipenv graph 查看包依赖
pipenv lock 生成lockfile
pipenv run python [pyfile] 运行py文件
来源:https://blog.csdn.net/qq_43965708/article/details/123212603


猜你喜欢
- 这篇文章主要介绍了如何基于Python实现自动扫雷,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可
- 在Web标准中的页面布局是使用Div配合CSS来实现的。这其中最常用到的就是使整个页面水平居中的效果,这是在页面布局中基本,也是最应该首先掌
- 一、实验目的:1.掌握Python中柱状图、条形图绘图函数的使用2.利用上述绘图函数实现数据可视化二、实验内容:1.练习python中柱状图
- 我自己的一个项目,需要同时对65536个文件进行多次写操作。如果先全部打开所有的文件,然后重复写,最后关闭所有的文件。那么第一次写操作全部完
- 换了N种字符串连接的方法,终于连接上去了。 共享下用的 Provider=SQLOLEDB.1; User ID=sa; Password=
- os.remove不能用来删除文件夹,否则拒绝访问。# -*- coding:utf-8 -*-import osif __name__ =
- 1.方法详情:parametrize(argnames,argvalues,indirect=False,ids=None,scope=No
- 以下就是对超常用的PHP正则表达式进行的收集整理,为了方便大家更快更好的掌握php正则表达式。一、表单验证匹配验证账号,字母开头,允许 5-
- 本文实例讲述了php获取文章内容第一张图片的方法。分享给大家供大家参考,具体如下:<?php$temp=mt_rand(1,4);$p
- 一、sqlserver优点:易用性、适合分布式组织的可伸缩性、用于决策支持的数据仓库功能、与许多其他服务器软件紧密关联的集成性、良好的性价比
- Python 字符串字符串是 Python 中最常用的数据类型。我们可以使用引号来创建字符串。创建字符串很简单,只要为变量分配一个值即可。例
- 前言:多态的实现必须满足两个前提条件1.继承:多态一定是发生在子类和父类之间2.重写:多态子类重写了父类的方法记住这两点再结合代码示例有助于
- 一 前言前一段时间接二连三的出现开发人员在测试环境和生产误操作导致数据库误删除/更新,对DBA而言,回滚数据着实是一件头疼的事情,凡涉及到恢
- 以前的Sony Ericsson牌DVD影碟机坏掉了,上周到沃尔玛买了个philips的回来,于是又淘了一些DVD回来看。在使用遥控的时候忽
- 要在密码两字中间添加空格,发现直接添加 是识别不了的,正确写法为:代码: <el-form-item label=
- scrapy爬虫框架介绍scrapy不是一个简单的函数功能库,而是一个爬虫框架爬虫框架:爬虫框架是实现爬虫功能的一个软件结构和功能组件的集合
- 一般情况下会有几种情况需要你把数据库设为只读: 1. Insert,Update,Delete 触发器 2. Check 约束 和 Dele
- 读取csv文件时添加表头/列名有时,我们读取的csv文件数据时发现没有表头/列名,是因为Python读取csv文件数据本来就没有表头,用pa
- 新浪微博需要登录才能爬取,这里使用m.weibo.cn这个移动端网站即可实现简化操作,用这个访问可以直接得到的微博id。分析新浪微博的评论获
- JavaScript 的历史虽短,但却发展迅速。最初NetScape开发了LiveScript语言,使得它的Navigator和W