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工具使用介绍相关推荐

  1. Python 程序封装-打包成exe程序

    Python 程序封装-打包成exe程序 前言 一. Python 打包工具-Pyinstaller 二.打包具体过程 1. 打包成仅包含一个独立的exe程序 2. 打包成包含文件夹的程序,内有相关的 ...

  2. 打包python程序发布_Python代码的打包与发布详解

    在python程序中,一个.py文件被当作一个模块,在各个模块中定义了不同的函数.当我们要使用某一个模块中的某一个函数时,首先须将这个模块导入,否则就会出现函数未定义的情况. 下面记录的是打包及安装包 ...

  3. Python 应用发布/打包技术

    收集如何 将Py应用打包发布的各种技巧: 1.1. 工具 {{{k <yanbo.yuan@gmail.com> reply-to python-cn@googlegroups.com, ...

  4. 手工将python程序发布为exe执行程序 [转]

    1. 手动制作python的exe可执行程序Python没有内建一个编译为exe的功能.给python程序的部署带来不少的麻烦.所以就会出现一些py2exe之类的很不错的工具,用于自动把.py文件编译 ...

  5. vs python生成exe文件_使用VScode编写python程序并打包成.exe文件-文件夹变成exe

    1. 下载vscode并安装 2. 配置Python环境 点击左下角的吃了图标,在弹出的菜单中选择extensions,在左上方搜索框内输入"Python",可以看到好多Pytho ...

  6. python 程序打包 vscode_使用VScode编写python程序并打包成.exe文件

    听说Visual Studio Code(VS Code)的诸多好处,了解了一下果真很喜欢,我喜欢它的缘由主要有3个,一是VS Code开源且跨平台,二是由于其界面很是酷,三是能够知足个人大所属代码需 ...

  7. ArcGIS中ArcMap通过Python程序脚本新建工具箱与自定义工具的方法

      本文介绍如何在ArcMap中,通过已有的Python脚本程序,建立新的工具箱并在其中设置自定义工具的方法.通过本文介绍的操作,我们便可以实现将自己的Python代码封装,并像其他ArcGIS已有工 ...

  8. 打包python程序_py2exe打包python程序

    一.简介 py2exe是一个将python脚本转换成windows上的可独立执行的可执行程序(*.exe)的工具,这样,你就可以不用装python而在windows系统上运行这个可执行程序. py2e ...

  9. python程序发布 ubuntu_在ubuntu16.04的虚拟环境中运行Python程序作为服务

    我正在尝试让一个Flask+SocketIO应用程序作为一个服务在ubuntu16.04上运行,在一个虚拟环境中.我的服务器每天凌晨3点重新启动(超出我的控制范围),所以我需要它在启动时自动启动.在 ...

  10. python程序发布 ubuntu_发布和运行(ubuntu下python服务器)

    发布: 第一步 paster create -t pylons helloworld 解释:创建一个以pylons为模板的项目,项目名字是helloworld 第二步 python setup.py ...

最新文章

  1. 单链表-删除单链表L中第一个值为x的结点的前驱结点(三指针法)
  2. SLAM、3D vision求职经历
  3. Windows 文件过滤驱动经验总结
  4. Makefile中打印变量
  5. C++知识点串联总结
  6. 递归算法学习系列之寻找第K大
  7. 来和 webpack 谈场恋爱吧!这课程好甜!
  8. (十)、java内部类与内部类的闭包和回调
  9. 什么样的前端框架才是一个好框架
  10. zip unzip命令行_Linux / Unix中的Zip和Unzip命令
  11. xampp修改mysql的默认空密码
  12. Luogu P1120 小木棍 [数据加强版]
  13. 餐饮后厨计算机应用,美萍餐饮管理系统,餐饮管理软件,餐饮软件,酒店收银系统,饭店点菜系统 --- 管理软件 美萍是专家!...
  14. Nginx 去除多斜杠 (//)
  15. 银行理财产品的十个坑
  16. selenium元素模糊定位xpath contains、starts-with和ends-with
  17. python迅雷下载任务出错_迅雷下载“任务出错”最新解决方法
  18. 破解携程中文验证码爬取机票价格数据
  19. 计算机的基础单位和四种进制的基本知识
  20. 三级网络技术备考重点之路由器配置及使用

热门文章

  1. [Java][Android][Process] Process 创建+控制+分析 经验浅谈
  2. 指数加权平均与其偏差消除
  3. [线段树实现区间最值]HDU5306 Gorgeous Sequence
  4. vue3初探-工程化项目架构-笔记
  5. canvas 从ondraw中获取_C# 在PDF中绘制多样风格的文本
  6. python编辑快速上手_Python编程如何快速上手,答案在这里
  7. 浅谈SpringMVC的概念及执行原理
  8. mysql_ddl(库、表、数据类型、常见约束)
  9. Java学习笔记——JDBC
  10. java定义数字类型的代码_数字类型内置方法(示例代码)