anaconda虚拟环境打包python发布exe

        本文实例:打包发布带窗口的python程序(程序中导入的库 有:random, base64, re, time, threading, tkinter, PIL)        

        使用anaconda虚拟环境打包python程序发布exe,可以使程序仅打包xx.py文件中导入的库,以控制exe程序的大小;相对于使用原有环境发布,可以大幅缩小exe文件大小。

        从系统home菜单中找到Anaconda,打开Anaconda命令行窗口(Anaconda Prompt)

一、检查更新conda

$ conda -V

 二、创建虚拟环境并激活

$ conda create -n [环境名]  python=x.x

创建python版本为3.7,名字为test1的虚拟环境。创建的虚拟环境以文件夹的形式存在,默认在Anaconda安装目录下的envs文件夹中。

创建过程中系统会将虚拟环境的python版本、默认安装库信息列出,让确定是否继续进行,输入y后继续;

 

 创建完成后(此时可以在envs文件夹下看到test1文件夹),系统提示:

        激活该环境命令为:$ conda activate test1

        关闭该环境命令为:$ conda deactivate

激活环境test1:

 三、安装所发布python程序中需要的库,以及打包程序需要使用的pyinstaller库

这里使用 $ pip install [库名]  命令安装库(环境创建时默认安装包中包含pip,可以直接使用)

进入环境文件夹:

$ cd [环境文件夹路径]

(我的Anaconda安装在c盘的swinstall下,所以命令为$ cd C:\swinstall\Anaconda\envs\test1,请根据实际确定路径)

 安装python程序用到的库以及pyinstaller库(注:可以使用$conda list 命令查看环境中已经存在库的列表,仅需要安装不在默认库列表中的库,如无法确认是否为默认库,建议对程序中所有库执行一次$pip install [库名] 命令)

 我的程序中用到了random库,进行安装时提示Error,而random库非特殊库,这时基本确定random库是默认库,已经包含在了环境中;(re, time, threading, base64, tkinter 库进行安装时出现了同样的Error,暂且认为其均为默认库,已经包含在了环境中)

继续安装其它库:

$ pip install pillow

 最后,不要忘记安装打包程序需要的pyinstaller库

$ pip install pyinstaller

四、进入python程序所在文件夹,执行打包命令$ pyinstall -F [-option]  xx.py

由于我的程序代码是在D盘,所以先从C盘切换到D盘,再进入文件夹

$ D:

$ cd D:\WorkandFuture\spiderpython\randsel

 我的打包命令为:

$ pyinstaller -F -w randselname.py

(-F为输出可执行文件,-w是程序执行时不输出黑窗口,具体细节请查阅pyinstaller相关文档)

命令执行结束,提示 successfully 即打包成功;打包时生成的文件在xx.py所在文件夹下,其中可执行文件xx.exe在生成的dist文件夹中。

运行xx.exe,测试成功,即可确认前期库安装没有问题。

最后,关闭虚拟环境。

$ conda deactivate

于20240426增加:

因:将htm格式表格转换为xlsx程序发布时:①在非虚拟环境中程序运行正常,②虚拟环境仅对pandas、pyinstaller进行安装,③发布时因需要输入而使用 pyinstaller -F xx.py;exe成功生成但运行时闪退;

后以pyinstaller -F -w xx.py发布,程序提示缺少包,添加后重新发布,运行正常。

故:因包依赖的原因,仅安装pandas等可见包是不够的,应可能考虑到包依赖;

解决:①无论是否需要黑窗口,都先以无窗口模式发布,运行以发现所缺少的包;

          ②尝试将编辑器环境修改为虚拟环境,运行.py以发现所缺少的包。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值