【Python打包成exe方法】——已解决导入第三方包无法打包的问题

  1. 前言

在我们写代码的过程中,我们开发的脚本一般都会用到一些第三方包,可能别人也需要用到我们的脚本,如果我们将我们的xx.py文件发给他,他是不能直接用的,他还需要安装python解释器,甚至还要安装我们用的那些第三方包,是不是有点小麻烦?但是我们都知道,PC是可以直接运行exe文件的,这就为我们提供了一个便捷的方式。所以,从看了这个教程以后,这都将成为过去式,打成exe之后,分享即可用。

 

PS: 如果打包为exe的话,版本尽量选择python3.6+32位版本,因为win64位系统向下兼容32位程序,但是如果不考虑32位系统的话无所谓,直接python64位版本直接打包就可以,只是只能在win64位系统上跑。

 

 

下面正式开始将一下怎么开始打包python代码(我用的是Anaconda3 64位的+pycharm)

 

 

 

  1. 安装pyinstaler

首先安装pyinstaller,使用安装命令:pip3 install pyinstaller,如下图所示。

 

 

  1. pyinstaler打包机制

我们写的python脚本是不能脱离python解释器单独运行的,所以在打包的时候,至少会将python解释器和脚本一起打包,同样,为了打包的exe能正常运行,会把我们所有安装的第三方包一并打包到exe。

 

即使我们的项目只使用的一个requests包,但是可能我们还安装了其他n个包,但是他不管,因为包和包只有依赖关系的。比如我们只装了一个requests包,但是requests包会顺带装了一些其他依赖的小包,所以为了安全,只能将所有第三方包+python解释器一起打包。如下图所示。

 

蓝色表示是安装requests依赖的包

 

  1. 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文件即可运行。

 

 

 

 

  1. 解决python打包生成的exe文件运行时提示缺少模块问题

事情原委:当时我用pyinstaller -F D:\pythonProject\Opencv__3\02__A.py打包了一个exe程序,但是运行时提示我缺少cv2模块然后我就去查pyinstaller的使用方法,找到pyinstaller有一个-p参数,使用这个-p参数可以指定多个打包路径,因此可以利用-p参数来同时指定好工程文件路径和需要一起打包的cv2模块路径:

  • 注:查看包所在目录方法:
  1. 使用win + R键打开运行栏,输入cmd+回车,在dos窗口内输入      pip list 回车即显示安装了多少包:

 

 

  1. 使用pip安装完包后,只需再执行一次命令pip install xx,就会显示安装路径。如:pip install jupyter安装完成后,再次输入pip install jupyter就会显示此包已经安装的路径了

 

 

可以看出:

Jupyter安装在C:\Users\xin\AppData\Local\Programs\Python\Python35\Lib\site-packages下面,记住这个路径

则在打包时输入 pyinstaller -F -p xx;yy.py

【xx即为刚才包的路径,yy.py为要打包的工程文件】

 

然后打包成功,双击打开看看发现可以运行了。(*^▽^*)

本文作者:HanaKoo

本文链接:https://www.cnblogs.com/HanaKoo/articles/16033595.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   HanaKoo  阅读(356)  评论(0编辑  收藏  举报
@format
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
🔑
  1. 1 Tiny Light(TV动画《地缚少年花子君》ED)(翻自 鬼頭明里) 柚卟
Tiny Light(TV动画《地缚少年花子君》ED)(翻自 鬼頭明里) - 柚卟
00:00 / 00:00
An audio error has occurred.

作词 : Saku

作曲 : Saku

優しさに触れて残る温度

消えないまま 愛しいと言えたら

心は軽くなるかな

閉ざした扉の向こうで

微かな声が聴こえてる

踏み出すことさえも出来ないから

孤独に寄り添ってる

まだこの胸の中 生きづいたまま

小さな灯し火のような想いを

風に吹かれぬように

雨に濡れないように

ずっと抱きしめてた

ただ 真っ直ぐなまま願う強さも

泣き出しそうになる脆い自分も

君が居なきゃ知らなかったんだよ

偶然の中で運命を見つけた

瞳閉じる度 記憶の海 漂っては

深い夢のあと

面影を探してたんだ

変わらないモノクロの日々に

君が色を添えてくから

滲んだ過去さえもいつの間にか

意味を持ち始めてる

まだこの胸の中隠したままの

痛いほど愛おしい こんな思いを

いつか消えてしまうその前に

届けたい人は 君だけなんだ

どんな涙も どんな笑顔も

全ては君のためにあるから

まだこの胸の中 生きづいたまま

小さな灯し火のような想いを

風に吹かれぬように

雨に濡れないように

ずっと抱きしめてた

ただ 真っ直ぐなまま願う強さも

泣き出しそうになる脆い自分も

君が居なきゃ知らなかったんだよ

偶然の中で運命を見つけた

君がいるだけで世界は変わった