发布于2023-01-21 10:36 阅读(912) 评论(0) 点赞(23) 收藏(2)
哈哈!今天是我在2023年发布的第一篇文章呀!
这两天,我在做一个爬虫项目。因为我做好后准备给我的朋友看看,但我朋友没有 Python 环境。所以,只好想办法把 .py 打包成 .exe 。
在网上搜了一下,发现目前相对主流的有 Pyinstaller 、 Py2exe 等。最终我选择了 Pyinstaller 。
我是用的 PyCharm 。在“终端”输入:
pip install pyinstaller
即可安装。
安装完成后,你就可以开始打包了。最快速的打包方式便是这样:
pyinstaller 文件名.py
如果看到 “successfully” 一词就代表打包“成功”了。
如此, Pyinstaller 就会在你的项目目录下生成 build文件夹 、 dist文件夹 与一个 文件名.spec。
其中, build文件夹 存放的是打包时的临时文件,可以删除; dist文件夹 下的文件夹便是你打包出来的,其下的 文件名.exe 是可执行的(注意!这里不能单独运行这个文件,它是有依赖的!后文还会介绍其它方法!);而 文件名.spec 是配置规范文件,它说明了软件包如何被配置、打了哪些补丁、安装哪些文件、安装到哪里等等。
现在你就可以在文件夹下运行 .exe 文件了!
但是,在我们实际开发过程中,会有各种各样的需求,这里就需要配置参数了。
常见参数:
-c(默认) | 显示控制台(命令行窗口,即黑框框) |
-w | 不显示控制台 |
-D(默认) | 生成一个包含 .exe 文件的目录,所有依赖项和 .exe 文件位于同一目录下 |
-F | 将所有依赖项打包为单独的、无依赖的 .exe 文件。 |
-i | 指定应用图标( .ico 文件) |
-n | 指定生成的目录、 .spec 文件、 .exe 文件的名字 |
-p | 设置导入路径 |
这里说一下:建议大家在调试时都不要使用 -w 参数,这样在看一些异常信息时会更加方便;另外单文件运行与目录下运行相比速度更慢(不止慢一点),所以这里要看个人情况去填写参数; -p 参数是当你在程序中引入了某个包(通过 import ),那么你就需要使用 “-p 引入的包的路径”,如有多个路径,则用分号分隔。
举个例子。源文件叫 main.py ,图标为 ico.ico ,这是一个爬虫程序,引入了 requests 包,需要控制台,程序名为 crawler ,追求速度,则输入:
pyinstaller -p D:\demo\venv\Lib\site-packages\requests -n crawler -i ico.ico -c -D main.py
好的呢!现在你就可以发给你的好朋友了呢!
但是……我以我的亲身经历告诉大家:似乎并不行。
最开始,我选择了打包为单文件,但发现用 -p 参数导入了,但和没导入一模一样,都会报错(这里可能是我自己的问题)。于是,我改为了生成一个包含 .exe 文件的目录便解决了第一个问题。所以,我个人是比较推荐选择生成一个包含 .exe 文件的目录的(使用 -D )。
弄好后,因为我自己的电脑有Python环境,以防万一,我准备放到我们家老电脑上试试(我们家老电脑系统是 win7 / 32位 )。结果,打开程序后先是报错:
无法启动此程序,因为计算机中丢失 api-ms-win-core-path-|1-1-0.dll。尝试重新安装该程序以解决此问题。
然后爆出错误信息,还没看清就闪退了。
好吧我一脸懵啊!
对于闪退的问题,只用打开 cmd 执行程序就能看到报错信息了。
但对于第一个问题,可以想办法下载这个动态库,放在系统指定的位置,但这个并不能直接解决问题。还有三种方法:一是将源文件在 32位 的系统上生成为 .exe 文件,二是在 64位 系统上下载 32位 的虚拟机进行生成,三是使用 32位 的 anaconda 。具体可参考关于python打包py文件成exe文件_星浩前进中的博客-CSDN博客_py打包成exe调用其他包需要调用其他csv。 而对于报错信息,如果按上述过程重新生成后还是存在,我也就无能为力了。
我之所以说Pyinstaller是“神”队友,是因为它的操作较简单,只是各种各样的坑有点多。但是其实只要把出现这些坑的原因、解决方法搞清楚,那使用起来就是非常方便的!
祝大家元旦快乐!
原文链接:https://blog.csdn.net/qq_43546083/article/details/128511494
作者:python好学吗
链接:https://www.pythonheidong.com/blog/article/1885263/c1df4116ed35245b7cfe/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!