Python打包方法Pyinstaller的使用

作者:晴空行 时间:2022-06-08 13:25:21 

Python是一个脚本语言,被解释器解释执行。它的发布方式:

  • .py文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的各种库。(Python官方的各种安装包就是这样做的)

  • .pyc文件:有些公司或个人因为机密或者各种原因,不愿意源码被运行者看到,可以使用pyc文件发布,pyc文件是Python解释器可以识别的二进制码,故发布后也是跨平台的,需要使用者安装相应版本的Python和依赖库。

  • 可执行文件:对于非码农用户或者一些小白用户,你让他装个Python同时还要折腾一堆依赖库,那简直是个灾难。对于此类用户,最简单的方式就是提供一个可执行文件,只需要把用法告诉Ta即可。比较麻烦的是需要针对不同平台需要打包不同的可执行文件(Windows,Linux,Mac,...)。

本文主要就是介绍最后一种方式,.py和.pyc都比较简单,Python本身就可以搞定。将Python脚本打包成可执行文件有多种方式,本文重点介绍PyInstaller,其它仅作比较和参考。

Python版本:Python3.5.2或本地下载地址

一、安装Pyinstaller

1、安装pywin32

下载安装文件:查找到跟自己适用的python版本及window系统版本匹配的pywin32,下载后安装

使用pip命令安装:pip install pywin32

2、安装Pyinstaller

下载安装文件安装:官网

使用pip命令安装:pip install PyInstaller

二、使用Pyinstaller

1、使用下载安装的方式安装的Pyinstaller打包方式

将需要打包的文件放在解压得到的Pyinstaller文件夹中,打开cmd窗口,把路径切换到当前路径打开命令提示行,输入以下内容(最后的是文件名):

python pyinstaller.py -F myfile.py

2、使用pip方式安装的Pyinstaller打包方式

打开cmd窗口,把路径切换到文件所在路径(文件随便放在哪里都行)打开命令提示行,输入以下内容(最后的是文件名):

pyinstaller -F myfile.py

3、输入参数的含义

-F 表示生成单个可执行文件

-w 表示去掉控制台窗口,这在GUI界面时非常有用。不过如果是命令行程序的话那就把这个选项删除吧!

-p 表示你自己自定义需要加载的类路径,一般情况下用不到

-i 表示可执行文件的图标

三、注意事项

文件中使用了第三方库的打包方式

在打包之前务必找到第三方库的包,把包复制到到跟myfile.py同目录下,然后再使用以上2种方式打包,否则会打包失败或者即使打包成功,程序也会闪退。

下面演示一下使用了第三方库的打包方式:

找到第三方库的包,如使用了requests,可以使用查找的方式,找到这个包在哪里,然后把它复制到myfile.py同目录下

Python打包方法Pyinstaller的使用

把包文件复制到myfile.py目录下

Python打包方法Pyinstaller的使用

给程序换图标的方法

输入命令中添加一个-i tubiao.ico(图标的相对路径)。如图:

Python打包方法Pyinstaller的使用

四、exe文件生成

如果程序打包过程没有报错,则会生成3个文件夹(有时候是2个),其中名为dist的文件夹中会有一个myfile.exe文件,运行一下,如果没有问题就打包成功,可以把这个exe文件单独拿出去用,其他的生成的文件夹可以删掉了。

Python打包方法Pyinstaller的使用

其他打包工具

distribute

功能类似setuptools. 安装后会有easy_install. 支持Python2和Python3.
官方: https://pypi.python.org/pypi/distribute/0.7.3
已经于2013年7月5日的0.7.3版后停止开发。

distutils2

功能类似setuptools.
官方:https://pypi.python.org/pypi/Distutils2/1.0a4
已经于2012年3月13日的1.0a4版后开始停止开发。
PyPI上的原文: keep using setuptools and pip for now, don't use distutils2.

来源:https://www.cnblogs.com/gopythoner/p/6337543.html

标签:Python,打包,Pyinstaller
0
投稿

猜你喜欢

  • TensorFlow人工智能学习张量及高阶操作示例详解

    2022-04-15 15:37:52
  • python使用opencv切割图片白边

    2021-10-16 04:44:06
  • Magic Photo Frame 神奇创意相框

    2009-09-15 20:45:00
  • python中的&&及||的实现示例

    2022-02-06 19:53:42
  • 详解Python中映射类型(字典)操作符的概念和使用

    2021-12-05 09:24:43
  • 基于python纯函数实现井字棋游戏

    2023-02-12 09:16:06
  • 详解python日期时间处理2

    2021-05-20 19:27:15
  • SQL Server各种日期计算方法

    2008-09-11 21:47:00
  • Python爬虫通过替换http request header来欺骗浏览器实现登录功能

    2021-04-05 21:55:26
  • 浅析JavaScript中的array数组类型系统

    2024-04-17 10:04:21
  • 新手如何安装Mysql(亲测有效)

    2024-01-17 00:21:01
  • Sql server2005 优化查询速度50个方法小结

    2024-01-26 16:51:52
  • python shutil操作文件实例讲解

    2022-05-20 06:42:08
  • 浅谈MySQL数据库崩溃(crash)的常见原因和解决办法

    2024-01-17 12:52:58
  • 详解Mysql多表联合查询效率分析及优化

    2024-01-23 00:59:29
  • 再谈 Web 默认字体

    2009-11-24 12:48:00
  • golang实现各种情况的get请求操作

    2024-04-25 15:30:15
  • python中找出numpy array数组的最值及其索引方法

    2022-11-26 14:24:00
  • js取得当前网址

    2024-04-10 11:03:14
  • 把JS与CSS写在同一个文件里

    2007-12-16 15:29:00
  • asp之家 网络编程 m.aspxhome.com