【Python】如何发布编写好的Python应用程序之Python Release for Windows(附踩坑经验) |
您所在的位置:网站首页 › python编好的程序怎么成为软件 › 【Python】如何发布编写好的Python应用程序之Python Release for Windows(附踩坑经验) |
运筹优化博士,只做原创博文。更多关于运筹学,优化理论,数据科学领域的内容,欢迎关注我的知乎账号:https://www.zhihu.com/people/wen-yu-zhi-37 最近写了几个Python的小程序给朋友使用,因为朋友完全就是一个商务运营人员,对编程语言什么的一窍不通,自然我也不可能让他安装Python编译器来运行我的源代码,并且这个小程序未来也是打算给普通用户用的,普通用户自然也没有Python运行环境。 所以我一开始是想把写好的Python代码打包成.exe给他使用,前后折腾了Pyinstaller,Py2exe 发现问题多多,打包后的.exe不是体积巨大就是各种错误。偶然间发现了 Python Release for Windows,试用之后发现部署起来方便,灵活度也比较高。因为商务人员的操作系统都是Windows x64的,我们也不需要考虑跨平台使用,这样的话 Python Release for Windows 就比 Pyinstaller 和 Py2exe 更实用一些。 那么如果你和我遇到相同的问题,你想把你的Python应用程序在本地部署,如果你想把Python应用程序转化为.exe方便给没有Python编译器的人使用的话,那么本文就是一个很好的替代方案。 1 Python Release for Windows 安装包下载在 Python Releases for Windows 找到所需Python版本的 Windows embeddable package 下载。 单单有一个Python编译器环境还是不行的,因为我们的应用程序基本都需要调用很多包,而现在我们刚下载下来的这个Python编译器环境还是一片空白的,没有安装所需的包。接下来我们要把我们程序所需的包安装到这个Python编译器环境中去。其实这个过程和conda里或者正常Python里配置环境的过程基本一致。 2.1 安装 Pip新下载的Python编译器还没有安装pip,没有pip我们安装别的包就很不方便,所以第一步我们首先安装pip。 在这个网站里下载 get-pip.py文件:https://bootstrap.pypa.io/get-pip.py,然后将 get-pip.py文件放在解压后的python-3.9.9-embed-amd64文件中,如下图所示: pip包已经安装成功了,接下来我们可以用pip来安装其它的包。在命令行中调用如下指令,发现 Lib/site-packages 并不在我们的系统路径中。 打开命令行,验证确实Lib/site-packages路径已经被添加进来了。 我们要发布的python源代码很简单,如下所示: import pandas as pd df = pd.read_excel("./demo_data.xlsx") print(df)我们把如上代码存在read_excel.py中,并且把它放到python-3.9.9-embed-amd64平级的文件夹中,如下图所示: 第一行:cd /d %~dp0 表示切换到当前文件运行的目录。 第二行:python read_excel.py 表示运行read_excel.py程序。 第三行:cmd.exe 表示启动命令行。 下图所示是运行.bat文件得到的结果: 到上面为止其实已经完成了python的环境的部署,但是在我自己的电脑上却发现程序运行报错,错误提示显示是缺某个python的包,而我已经安装过了这个包。这个时候我发现由于我安装了Anaconda所以在命令行中python默认会选择Anaconda下的python而不会选择我新部署的python-embed环境,发现这个bug之后,我进行了三个地方的修改: 1 我将 python-embed文件夹下的 python.exe 改名为 python_embed.exe,这么做的目的就是为了区分出python关键字,因为python关键字已经被Anaconda占用了,所以我通过改名后将两个python环境区分出来。下次调用python_embed关键字就知道是我要启动新安装的python环境,而不是启动Anaconda里的python环境了。 和之前的start.bat文件比较修改了两个地方:1是加了一句 cd python-3.9.9-embed,这是因为我们要进入到子文件夹下面才能开始执行,2是把 python main.py 改为 python_embed main.py,这样就是运行我们要的python环境,而不会调用Anaconda下的python环境。 总结总得来说我觉得 Python Release for Windows实用性还是蛮高的,Python Release for Windows的优势有以下几点: 1 哪怕你的代码调用了很多包,你只要按照你配置Anaconda或者Python环境的方式一步步就可以把环境配置到 Python Release for Windows 里。不像Pyinstaller 和 Py2exe 经常出现一些莫名其妙的问题,尤其是包调用的多了,也很难找出来问题在哪里。 2 打包后程序体积小便于他人使用,同样的代码 我用Pyinstaller 能有1个多G的大小,而Python Release for Windows也就100多M,压缩之后也就40多M。这么一小的体积就可以包括一个python环境,轻便环保便于发送。 3 Pyinstaller 生成 exe 需要很长时间,生成的过程还经常报错。相对来说 Python Release for Windows 则不存在此类问题。 参考文献:最简单的方式发布你的Python应用 - 云+社区 - 腾讯云 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |