Python打包exe 有很多可以用的 如 pyinstaller py2exe cx_Freeze nuitka py2app py0xidizer

其中cx_Freeze没用过

nuitka是把py代码转为C++代码 再重新编译 优点是运行速度快 占用空间小 缺点是转换重新编译等耗时长

py2app是把Python脚本打包成Mac程序的

py0xidizer是把Python脚本打包成嵌入式程序的

这篇文章总结以下pyinstall和py2exe的用法

注:以下都是windows下

pyinstaller

安装:pip installer pyinstaller

使用:pyinstaller [参数][参数2][...] 要打包的文件

示例 pyinstaller -F shili.py

参数可以参考 PyInstaller各参数含义_pyinstaller 参数_张栈不全的博客-CSDN博客很全

总结常用的几个

-D :生成出来是一个文件夹 里面包含各种依赖的库和资源 还有exe 默认是这个

-F:生成单一exe文件 所有资源都打包在exe里

-n:生成出来exe和.spec文件的名字 默认是你脚本的名字

-i:exe的图标

-c:生成出来的exe文件打开有cmd窗口

-w:隐藏cmd窗口

--exclude-module:排除不需要的库 可以减少文件的大小

打包出来后执行可能会有一闪而过的场景 可以在cmd里执行 会有错误信息 方便排错

---------------------------------------------------------------------------------------------------------------------

py2exe

官网:py2exe.org

安装:pip install py2exe

使用:需要先写一个py文件 内容是生成时的各种配置

示例:这里需要把你的python目录添加到环境变量

setup.py:

from distutils.core import setup
import py2exe setup(
zipfile=None,
console = [{"script":'clipboard.py'}] #要编译的文件 console表示生成控制台程序 windows是windows程序
    options = {
"py2exe" :
{
"compressed" : 1, # 压缩
"optimize" : 2,
"bundle_files" : 1, # 所有文件打包成一个 exe 文件 可选选项0,1,2,3 详细见下方
}
})

常用参数

setup: py2exe的核心函数,用于配置打包参数并运行打包过程。

setup下

windows: 用于打包带界面的程序

console: 用于打包命令行程序

options: 用于指定各种打包选项,如生成zip文件、排除哪些模块等。

zipfile: 用于把程序需要的dll等文件打包zip 默认打包 设置none则把这些文件打包进exe

options里:

excludes: 用于排除不需要的python模块。

includes: 用于强制包含某些python模块。

packages: 用于自动包含某些python包。

dist_dir: 指定输出目录。

dll_excludes: 用于排除某些不需要的dll文件。

bundle_files: 可选参数 0,1,2,3   0:表示打包成单一exe文件 1和2实测没看出区别 有dll文件和exe 3:pyd dll 和exe文件

compressed:是否压缩

name:作者

description:exe名字

windows里:

icon_resources:设置图标

script:要打包的脚本

示例:windows = [{'script':'shili.py', 'icon_resources': [(1, 'xx.ico')]}]

写好setup.py后 复制到要打包的目录下

然后打开cmd 切换到setup.py的目录 执行 python setup.py py2exe  打包后的文件在同目录下的dist文件夹里

坑:1、文件名必须是setup.py 其他都不行 2、如果你用的是64位python只能生成64位程序 只能在64位系统上运行 解决方法:在32位python下打包  3、从Python3.3开始 window构建python使用visual studio 2010 生成exe后需要复制msvcr100.dll到dist目录下 和exe文件一起发布

python版本不同需要的dll不同

以下来自py2exe官网

如果您使用的是 Python 2.4 或 2.5,那么您需要的 DLL 称为 MSVCR71.dll。此 DLL 可能已包含在您的 dist 目录中,在这种情况下,您无需执行更多操作。

但是,此文件的版权归Microsoft所有,您需要检查您是否具有重新分发它的合法权利。如果您有 Visual Studio 的副本,请检查安装中提供的文件修订.txt以查看您是否具有此 DLL 的重新分发权限。通常,如果您拥有Microsoft Visual C++ 的许可证,则您有权重新分发它,但如果您使用速成版,则无权重新分发它。

如果您无权重新分发 MSVCR71.dll,则您的用户必须使用 Microsoft Visual C++ 2005 可再发行组件包 (vcredist_x86.exe) 自行安装它。

您可以指示用户自己下载并运行它,也可以为您的应用程序创建一个安装程序,其中包括 vcredist_x86.exe(它本身可由任何人再发行),然后将其作为应用程序安装的一部分运行。

python2.6,2.7,3.0,3.1 需要MSVCR90.dll

其他版本官网没写 可能是MSVCR100.dll 可能MCVCR100.dll向下兼容?这个没试过

如果没有打包相关dll 客户机上也没有需要的dll文件 会报 缺少msvcrXX.dll的错误 可以在虚拟机里打开软件运行一下 看缺少什么文件

有人说 py2exe打包的文件比pyinstaller小 但是我打包相同的文件 打包出来的文件都差不多大  py2exe配置文件里的各种括号简直要把人绕晕 跟mongodb有得一拼

个人感觉pyinstaller好用一些 成熟一些

0表示打包成单一exe文件 1和2实测没什么区别 外面只有dll文件和exe 3有pyd dll 和exe

python打包exe总结 pyinstaller py2exe的更多相关文章

  1. Python打包EXE神器 pyinstaller

    最近由于项目需要,以前的python文件需要编辑为EXE供前端客户使用. 由于最早接触的是distutils,所以一开始准备使用distutils和py2exe搭配来进行python的exe化,也就是 ...

  2. python打包exe之pyinstaller用法

    pyinstaller可以将python写好的脚本打包成exe文件,方便windows用户在没有python环境下运行.这个程序完全跨平台,包括Windows.Linux.Mac OS X等多个操作系 ...

  3. python打包exe pyinstaller 简单使用

    源由 最近公司让做了一个小工具,使用python写的,写完之后要求能放在其它电脑上运行,于是就开始寻找方案; 按网上的说法 py2exe已经很久没更新了,资料也不多: 于是就采用pyinstaller ...

  4. Python文件打包exe教程——Pyinstaller(亲测有效)

    今天将要解决一个问题,如何打包Pyhon文件 众所周知,Python文件的后缀名为“.py” 所以执行Python文件的要求之一便是具有python环境. 偶尔特殊情况,或者运行一些比较简单的工具,但 ...

  5. python 打包exe

    下载及安装:pip install pyinstaller 执行命令: pyinstaller -F xxx.py pyinstaller --onefile meng.py 可以运行的exe文件位于 ...

  6. 解决Python打包exe控制台无法粘贴问题

    使用pyinstaller打包生成可执行exe文件后,发现启用input()接受键盘输入时窗口无法粘贴也无法右键,找了好久终于找到问题所在: 一是通过右键单击控制台主题边框在弹出的菜单中选择编辑.粘贴 ...

  7. python 打包exe注意的问题

    教程百度.谷歌都有,本文讲讲安装时出错的问题. 教程:http://keliang.blog.51cto.com/3359430/661884 1.cxfreeze 找不到路径时: 需要修改Scrip ...

  8. python打包exe文件-ImportError: No module named 'queue'

    我之前遇到的一个错误就是 File "site-packages\urllib3\packages\six.py", line 92, in __get__ File " ...

  9. python打包exe

    https://www.imooc.com/article/246868 虽然在3.7下报错了,但是先码

  10. python打包exe文件

    https://blog.csdn.net/lqzdreamer/article/details/77917493 测试下载pyinstall,在安装运行就可以了

随机推荐

  1. Bootstrapd导航条使用

    要想在程序中集成Bootstrap,显然要对模板做所有必要的改动.不过,更简单的方法是使用一个名为Flask-Bootstrap 的Flask 扩展,简化集成的过程. 安装:Flask-Bootstr ...

  2. [数据库/MYSQL]#解决缺陷#设置Unique索引时:"[Err] 1071 - Specified key was too long; max key length is 767 bytes"

    1 问题复现 原表结构: CREATE TABLE `XX_TEMPERATURE` ( `FLOW_ID` int(11) NOT NULL COMMENT '独立的数据表或FTP唯一标识', -- ...

  3. 从内核源码看 slab 内存池的创建初始化流程

    在上篇文章 <细节拉满,80 张图带你一步一步推演 slab 内存池的设计与实现 >中,笔者从 slab cache 的总体架构演进角度以及 slab cache 的运行原理角度为大家勾勒 ...

  4. 学会提示-AI时代职场必修课

    作者:京东 何雨航 " 上个时代要学会提问,这个时代要学会提示." 引言 当你在写提数代码时,小张已经完成了数据分析:当你正在整理材料时,小王却在和对象逛环球影城:述职时,你发现小 ...

  5. C++重载的奥义之运算符重载

    0.引言 重载,顾名思义从字面上理解就是重复装载,打一个不恰当的比方,你可以用一个篮子装蔬菜,也可以装水果或者其它,使用的是同一个篮子,但是可以用篮子重复装载的东西不一样. 正如在之前的文章<重 ...

  6. STIL 格式pattern介绍

    相信很多工程师,特别是刚入行或准备入行的兄弟们或多或少听过测试相关的东西.如果你想做DFT工程师的,测试工程师的,而对于设计/验证工程师们如果能了解下STIL文件的原理,在和DFT/测试工程师聊技术聊 ...

  7. Node + Express 后台开发 —— 起步

    Node + Express 后台开发 -- 起步 前面陆续学习了一下 node.npm.模块,也稍尝试 Express,感觉得换一个思路加快进行. 比如笔者对前端的开发已较熟悉,如果领导给一个内部小 ...

  8. odoo 开发入门教程系列-QWeb简史

    QWeb简史 到目前为止,我们的房地产模块的界面设计相当有限.构建列表视图很简单,因为只需要字段列表.表单视图也是如此:尽管使用了一些标记,如<group>或<page>,但在 ...

  9. 基于django+ansible+webssh运维自动化管理系统

    基于django+ansible+webssh运维自动化管理系统   前言 最初开发这个基于Django ansible运维自动化管理系统的想法其实从大学时候就已经有了,但是苦于技术原因和没有线上环境 ...

  10. 如何通过C#/VB.NET 代码调整PDF文档的页边距

    PDF边距是页面主要内容区域和页面边缘之间的距离.与Word页边距不同,PDF文档的页边距很难更改.因为Adobe没有提供操作页边距的直接方法.但是,您可以通过缩放页面内容来改变页边距.本文将介绍如何 ...