使用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 sleep

from hello import show


def main():
    count = 1

    while count <= 5:
        show(count)
        sleep(1)
        count += 1
    print("Bye!")


if __name__ == "__main__":
    main()

hello.py

from word import what


def 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 命令

  1. -i 给应用程序添加图标
  2. -F 指定打包后只生成一个exe格式的文件
  3. -D –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)
  4. -c –console, –nowindowed 使用控制台,无界面(默认)
  5. -w –windowed, –noconsole 使用窗口,无控制台
  6. -p 添加搜索路径

如何打包资源文件见链接:
python将资源文件一起打包进exe 讲解(有算例)

sklearn模型打包讲解
python打包exe 之打包sklearn模型中的各种坑及其解决方法。

本文使用的pipenv来管理虚拟环境,还可以使用anaconda来管理虚拟环境。
anaconda虚拟环境教程大全

在这里插入图片描述
电气工程的计算机萌新:余登武。写博文不容易。如果你觉得本文对你有用,请点个赞支持下,谢谢。
在这里插入图片描述

  • 24
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: 使用pyinstaller将多个python脚本打包exe程序,可以按照以下步骤进行操作: 1. 确保已经安装了pyinstaller库。可以通过在命令行中输入`pip install pyinstaller`来安装。 2. 将要打包多个.py文件放在同一个目录下。 3. 在命令行中进入到存放.py文件的目录中,执行以下命令:`pyinstaller -F your_script_name.py`,其中your_script_name.py是要打包的主文件名。 4. 执行上述命令后,pyinstaller会自动将所有相关的依赖文件打包,并生成exe可执行文件打包的过程可能需要一些时间,具体根据脚本的复杂性和依赖的库的数量而定。 5. 打包完成后,可在dist目录下找到生成的exe可执行文件。 需要注意以下几点: - 可以使用`-w`选项来关闭命令行窗口,使打包后的exe程序在后台运行。 - 如果有额外的资源文件(如图像、音频文件等)需要一同打包,可以在命令行中增加`--add-data`或`--add-binary`选项来指定文件路径。 - 如果程序需要运行在特定的Python版本中,可以使用`--specpath`选项来指定python安装目录。 通过以上步骤,你就可以将多个python脚本打包为一个独立的exe程序,并在没有Python解释器的环境中运行。 ### 回答2: 使用PyInstaller将多个Python文件打包exe程序非常简单。 首先,你需要安装PyInstaller。你可以打开命令提示符窗口,并输入以下命令来安装PyInstaller: ``` pip install pyinstaller ``` 安装完成后,你可以将所有的Python文件放在同一个文件夹中。 接下来,你需要打开命令提示符窗口,并导航到包含Python文件文件夹。 在命令提示符窗口中,输入以下命令来打包Python文件exe程序: ``` pyinstaller --onefile your_script.py ``` 其中,`your_script.py`是你想要打包Python文件文件名。如果你想要打包多个文件,你可以在同一行的命令中添加它们的文件名。 一旦PyInstaller完成打包,它会在当前文件夹中创建一个`dist`文件夹。在`dist`文件夹中,你将找到一个名为`your_script.exe`的可执行文件。这个exe文件就是你打包的程序。 总结起来,使用PyInstaller将多个Python文件打包exe程序的步骤如下: 1. 安装PyInstaller; 2. 将所有要打包Python文件放在同一文件夹中; 3. 使用命令提示符窗口导航到该文件夹; 4. 运行PyInstaller命令打包文件,指定打包成一个可执行文件; 5. 查找在`dist`文件夹中生成的可执行文件,并将其作为你的打包程序使用。 希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

总裁余(余登武)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值