Python程序发布(打包)及pyInstaller、cx_Freeze工具使用介绍
Python程序发布
Python程序发布时,通常包括以下三种形式:
- py源码:即源程序代码,使用时需要Python执行环境(包含对应的依赖库)
- pyc形式:由py文件编译生成,源码私密性提升、运行速度提升
- 可执行文件:可直接运行的程序文件,不同平台(Mac/Linux/Windows…)下的格式不同,与平台强关联。无须额外下载依赖程序,指定平台下可直接使用
Python程序打包成可执行程序工具比较
参考链接
Solution | Windows | Linux | OS X | Python 3 | License | One-file mode | Zipfile import | Eggs | pkg_resources support |
---|---|---|---|---|---|---|---|---|---|
bbFreeze | yes | yes | yes | no | MIT | no | yes | yes | yes |
py2exe | yes | no | no | yes | MIT | yes | yes | no | no |
pyInstaller | yes | yes | yes | yes | GPL | yes | no | yes | no |
cx_Freeze | yes | yes | yes | yes | PSF | no | yes | yes | no |
py2app | no | no | yes | yes | MIT | no | yes | yes | yes |
其中pyInstaller与cx_Freeze的通用性最强(全平台支持、支持Python3),故仅对这两种工具进行说明。对应工具的安装可直接使用pip search指令查询,并使用pip install 指令安装,本文不做多余描述
pyInstaller
pyInstaller是指令+参数形式:
pyinstaller [options] script [script …] | specfile
执行上述指令后,会自动生成两个目录 build和dist,可执行文件包含在dist目录中,同时包含了其他打包的库。pyInstaller是支持 单文件模式(上表中的One-file mode) 的,可以通过-F 选项打包成单一可执行文件:
pyinstaller -F specfile
pyInstaller命令执行时,会自动生成一个.spec文件,用户可手动修改该文件,用于加强处理(譬如对相应的文件过滤等)。对应规则可参考 using-spec-files
然后使用指令:
pyinstaller specfile
pyi-build specfile
更详细的使用可以参考官方文档
cx_Freeze
cx_Freeze构建脚本
cx_Freeze建立在构建脚本(官方假设其名为setup.py),其基本格式为:
import sys
from cx_Freeze import setup, Executable# Dependencies are automatically detected, but it might need fine tuning.
build_exe_options = {"packages": ["os"], "excludes": ["tkinter"]}# GUI applications require a different base on Windows (the default is for a
# console application).
base = None
if sys.platform == "win32":base = "Win32GUI"setup( name = "guifoo",version = "0.1",description = "My GUI application!",options = {"build_exe": build_exe_options},executables = [Executable("guifoo.py", base=base)])
在命令行中使用命令:
python setup.py build
该命令将在setup.py脚本同目录下生成一个 build 文件夹,其中包含了 setup.py中指定名称的可执行文件,同时包含了其他依赖的库等。
在Windows下可以使用如下指令生成安装文件(msi):
python setup.py bdist_msi
而在Mac OS X中,则可以使用如下指令生成对应的dmg安装文件:
python setup.py bdist_dmg
官方提供了若干依赖脚本示例 — Github地址
关于cx_Freeze中setup.py文件里的相关参数说明,可直接参考 官方文档,后续本文可能会对部分特殊的情况进行补充说明
cx_Freeze脚本异常情况补充说明
部分异常及相应问题解决可参考如下链接:
用 cx_Freeze 将 Python 脚本编译为 Windows exe 实战
Python程序发布(打包)及pyInstaller、cx_Freeze工具使用介绍相关推荐
- Python 程序封装-打包成exe程序
Python 程序封装-打包成exe程序 前言 一. Python 打包工具-Pyinstaller 二.打包具体过程 1. 打包成仅包含一个独立的exe程序 2. 打包成包含文件夹的程序,内有相关的 ...
- 打包python程序发布_Python代码的打包与发布详解
在python程序中,一个.py文件被当作一个模块,在各个模块中定义了不同的函数.当我们要使用某一个模块中的某一个函数时,首先须将这个模块导入,否则就会出现函数未定义的情况. 下面记录的是打包及安装包 ...
- Python 应用发布/打包技术
收集如何 将Py应用打包发布的各种技巧: 1.1. 工具 {{{k <yanbo.yuan@gmail.com> reply-to python-cn@googlegroups.com, ...
- 手工将python程序发布为exe执行程序 [转]
1. 手动制作python的exe可执行程序Python没有内建一个编译为exe的功能.给python程序的部署带来不少的麻烦.所以就会出现一些py2exe之类的很不错的工具,用于自动把.py文件编译 ...
- vs python生成exe文件_使用VScode编写python程序并打包成.exe文件-文件夹变成exe
1. 下载vscode并安装 2. 配置Python环境 点击左下角的吃了图标,在弹出的菜单中选择extensions,在左上方搜索框内输入"Python",可以看到好多Pytho ...
- python 程序打包 vscode_使用VScode编写python程序并打包成.exe文件
听说Visual Studio Code(VS Code)的诸多好处,了解了一下果真很喜欢,我喜欢它的缘由主要有3个,一是VS Code开源且跨平台,二是由于其界面很是酷,三是能够知足个人大所属代码需 ...
- ArcGIS中ArcMap通过Python程序脚本新建工具箱与自定义工具的方法
本文介绍如何在ArcMap中,通过已有的Python脚本程序,建立新的工具箱并在其中设置自定义工具的方法.通过本文介绍的操作,我们便可以实现将自己的Python代码封装,并像其他ArcGIS已有工 ...
- 打包python程序_py2exe打包python程序
一.简介 py2exe是一个将python脚本转换成windows上的可独立执行的可执行程序(*.exe)的工具,这样,你就可以不用装python而在windows系统上运行这个可执行程序. py2e ...
- python程序发布 ubuntu_在ubuntu16.04的虚拟环境中运行Python程序作为服务
我正在尝试让一个Flask+SocketIO应用程序作为一个服务在ubuntu16.04上运行,在一个虚拟环境中.我的服务器每天凌晨3点重新启动(超出我的控制范围),所以我需要它在启动时自动启动.在 ...
- python程序发布 ubuntu_发布和运行(ubuntu下python服务器)
发布: 第一步 paster create -t pylons helloworld 解释:创建一个以pylons为模板的项目,项目名字是helloworld 第二步 python setup.py ...
最新文章
- 单链表-删除单链表L中第一个值为x的结点的前驱结点(三指针法)
- SLAM、3D vision求职经历
- Windows 文件过滤驱动经验总结
- Makefile中打印变量
- C++知识点串联总结
- 递归算法学习系列之寻找第K大
- 来和 webpack 谈场恋爱吧!这课程好甜!
- (十)、java内部类与内部类的闭包和回调
- 什么样的前端框架才是一个好框架
- zip unzip命令行_Linux / Unix中的Zip和Unzip命令
- xampp修改mysql的默认空密码
- Luogu P1120 小木棍 [数据加强版]
- 餐饮后厨计算机应用,美萍餐饮管理系统,餐饮管理软件,餐饮软件,酒店收银系统,饭店点菜系统 --- 管理软件 美萍是专家!...
- Nginx 去除多斜杠 (//)
- 银行理财产品的十个坑
- selenium元素模糊定位xpath contains、starts-with和ends-with
- python迅雷下载任务出错_迅雷下载“任务出错”最新解决方法
- 破解携程中文验证码爬取机票价格数据
- 计算机的基础单位和四种进制的基本知识
- 三级网络技术备考重点之路由器配置及使用
热门文章
- [Java][Android][Process] Process 创建+控制+分析 经验浅谈
- 指数加权平均与其偏差消除
- [线段树实现区间最值]HDU5306 Gorgeous Sequence
- vue3初探-工程化项目架构-笔记
- canvas 从ondraw中获取_C# 在PDF中绘制多样风格的文本
- python编辑快速上手_Python编程如何快速上手,答案在这里
- 浅谈SpringMVC的概念及执行原理
- mysql_ddl(库、表、数据类型、常见约束)
- Java学习笔记——JDBC
- java定义数字类型的代码_数字类型内置方法(示例代码)