【Python打包成exe方法】——已解决导入第三方包无法打包的问题
- 前言
在我们写代码的过程中,我们开发的脚本一般都会用到一些第三方包,可能别人也需要用到我们的脚本,如果我们将我们的xx.py文件发给他,他是不能直接用的,他还需要安装python解释器,甚至还要安装我们用的那些第三方包,是不是有点小麻烦?但是我们都知道,PC是可以直接运行exe文件的,这就为我们提供了一个便捷的方式。所以,从看了这个教程以后,这都将成为过去式,打成exe之后,分享即可用。
PS: 如果打包为exe的话,版本尽量选择python3.6+32位版本,因为win64位系统向下兼容32位程序,但是如果不考虑32位系统的话无所谓,直接python64位版本直接打包就可以,只是只能在win64位系统上跑。
下面正式开始将一下怎么开始打包python代码(我用的是Anaconda3 64位的+pycharm)
- 安装pyinstaler
首先安装pyinstaller,使用安装命令:pip3 install pyinstaller,如下图所示。
- pyinstaler打包机制
我们写的python脚本是不能脱离python解释器单独运行的,所以在打包的时候,至少会将python解释器和脚本一起打包,同样,为了打包的exe能正常运行,会把我们所有安装的第三方包一并打包到exe。
即使我们的项目只使用的一个requests包,但是可能我们还安装了其他n个包,但是他不管,因为包和包只有依赖关系的。比如我们只装了一个requests包,但是requests包会顺带装了一些其他依赖的小包,所以为了安全,只能将所有第三方包+python解释器一起打包。如下图所示。
蓝色表示是安装requests依赖的包
- Pyinstaler打包exe
1. 我们来将自己写好的.py的文件打包成一个exe,我们直接cmd切换到这个脚本的目录,执行命令:pyinstaller -F setup.py,如下图所示:
[ps:可以直接在含有.py文件的目录下地址框输入cmd回车打开dos窗口,输入pyinstaller -F setup.py 注意,-F两边是有空格的。Setup.py是我的文件名,到时候替换成自己的即可。]
ps: -F参数表示覆盖打包,这样在打包时,不管我们打包几次,都是最新的,这个记住就行,固定命令。
2. 执行完毕之后,会生成几个文件夹,如下图所示。
3.在dist文件夹下,就有了一个exe程序,这个就是可执行的exe程序,如下图所示。
双击这个.exe文件即可运行。
- 解决python打包生成的exe文件运行时提示缺少模块问题
事情原委:当时我用pyinstaller -F D:pythonProjectOpencv__3 2__A.py打包了一个exe程序,但是运行时提示我缺少cv2模块然后我就去查pyinstaller的使用方法,找到pyinstaller有一个-p参数,使用这个-p参数可以指定多个打包路径,因此可以利用-p参数来同时指定好工程文件路径和需要一起打包的cv2模块路径:
- 注:查看包所在目录方法:
- 使用win + R键打开运行栏,输入cmd+回车,在dos窗口内输入 pip list 回车即显示安装了多少包:
- 使用pip安装完包后,只需再执行一次命令pip install xx,就会显示安装路径。如:pip install jupyter安装完成后,再次输入pip install jupyter就会显示此包已经安装的路径了
可以看出:
Jupyter安装在C:UsersxinAppDataLocalProgramsPythonPython35Libsite-packages下面,记住这个路径
则在打包时输入 pyinstaller -F -p xx;yy.py
【xx即为刚才包的路径,yy.py为要打包的工程文件】
然后打包成功,双击打开看看发现可以运行了。(*^▽^*)
转载请注明出处,谢谢!!!
相关文章
- Python中的函数与方法 以及Bound Method和Unbound Method
- 一文贯通python文件读取
- Python 中的异步编程:Asyncio
- 7个你现在就该学习Python的理由
- 提高Python运行效率的六个窍门
- Python数据科学:神经网络
- 一篇文章看懂大数据分析就业前景及职能定位
- R和Python中的文本挖掘:8个入门小贴士
- 告诉你为什么Python有点慢,但我却无所谓?
- 专注学习DevOps编程语言Top 5推荐
- Python发送邮件脚本
- Python多进程并行编程实践: mpi4py 的使用
- Python语言在未来的发展前景
- Python vs Ruby: 谁是最好的 web 开发语言?
- Python对Ruby:谁在Web开发领域更胜一筹?
- Python一行代码完成并行任务
- Python开发者2017应该关注的七个类库
- python爬虫入门基本知识
- 在终端中优雅地编写Python
- Python机器学习实战:信用卡欺诈检测