python打包exe总结 pyinstaller py2exe
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的更多相关文章
- Python打包EXE神器 pyinstaller
最近由于项目需要,以前的python文件需要编辑为EXE供前端客户使用. 由于最早接触的是distutils,所以一开始准备使用distutils和py2exe搭配来进行python的exe化,也就是 ...
- python打包exe之pyinstaller用法
pyinstaller可以将python写好的脚本打包成exe文件,方便windows用户在没有python环境下运行.这个程序完全跨平台,包括Windows.Linux.Mac OS X等多个操作系 ...
- python打包exe pyinstaller 简单使用
源由 最近公司让做了一个小工具,使用python写的,写完之后要求能放在其它电脑上运行,于是就开始寻找方案; 按网上的说法 py2exe已经很久没更新了,资料也不多: 于是就采用pyinstaller ...
- Python文件打包exe教程——Pyinstaller(亲测有效)
今天将要解决一个问题,如何打包Pyhon文件 众所周知,Python文件的后缀名为“.py” 所以执行Python文件的要求之一便是具有python环境. 偶尔特殊情况,或者运行一些比较简单的工具,但 ...
- python 打包exe
下载及安装:pip install pyinstaller 执行命令: pyinstaller -F xxx.py pyinstaller --onefile meng.py 可以运行的exe文件位于 ...
- 解决Python打包exe控制台无法粘贴问题
使用pyinstaller打包生成可执行exe文件后,发现启用input()接受键盘输入时窗口无法粘贴也无法右键,找了好久终于找到问题所在: 一是通过右键单击控制台主题边框在弹出的菜单中选择编辑.粘贴 ...
- python 打包exe注意的问题
教程百度.谷歌都有,本文讲讲安装时出错的问题. 教程:http://keliang.blog.51cto.com/3359430/661884 1.cxfreeze 找不到路径时: 需要修改Scrip ...
- python打包exe文件-ImportError: No module named 'queue'
我之前遇到的一个错误就是 File "site-packages\urllib3\packages\six.py", line 92, in __get__ File " ...
- python打包exe
https://www.imooc.com/article/246868 虽然在3.7下报错了,但是先码
- python打包exe文件
https://blog.csdn.net/lqzdreamer/article/details/77917493 测试下载pyinstall,在安装运行就可以了
随机推荐
- [Linux]常用命令之【tar/zip/unzip/gzip/gunzip】
1 tar .tar与.gz有什么联系与区别? .tar 只是进行打包,并没有压缩. 则: 用tar-cvf进行打包 用tar-xvf进行解包. .tar.gz 是既打包又压缩 ,则: tar –cz ...
- ResNet50的猫狗分类训练及预测
相比于之前写的ResNet18,下面的ResNet50写得更加工程化一点,这还适用与其他分类. 我的代码文件结构 1. 数据处理 首先已经对数据做好了分类 文件夹结构是这样 开始划分数据集 split ...
- Redis(八)redis新功能
redis6新功能 1 ACL Redis ACL是AccessControlList(访问控制表)的缩写,该功能允许根据可以执行的命令和访问的键来限制某些连接. 2 基本命令 acl help &g ...
- If选择语句的用法
今天我们学习下If判断语句. 首先了解下它有几种用法: If单选择语句 If双选择语句 If多选择语句 我们一个一个用,每一个用法都给一个运用的过程演练一下. If单选择语句:我们很多需要判断一个东西 ...
- Django笔记二十六之数据库函数之数学公式函数
本文首发于公众号:Hunter后端 原文链接:Django笔记二十六之数据库函数之数学公式函数 这一篇来介绍一下公式函数,主要是数学公式. 其中 sin,cos 这种大多数情况下用不上的就不介绍了,主 ...
- 当我第一次通过Kotlin和Compose来实现一个Canvas时, 我收获了什么?
当我第一次通过Kotlin和Compose来实现一个Canvas时, 我收获了什么? 自从2019年Google推荐Kotlin为Android开发的首选语言以来已经经历了将近四年的时间, Compo ...
- 讯飞星火大模型 与New Bing实测对比
昨天科大讯飞发布了讯飞星火认知大模型,在发布会现场实测大模型的7种核心能力,并发布了它在教育.办公.汽车.数字员工领域的应用成果.科大讯飞董事长刘庆峰表示:认知大模型展示了通用人工智能的曙光,讯飞星火 ...
- 【Redis】Redis 编译安装配置优化,多实例配置
一.Redis 配置详解 # Redis configuration file example. # # Note that in order to read the configuration fi ...
- #Python实例 计算外卖配送距离(基于经纬度的导航及直线距离)
一:X-MIND 二:计算两点经纬度之间的距离 经纬度是利用三维球面空间来描述地球上一个位置的坐标系统,每个经纬度坐标由经度 lng 和纬度 lat 两个分量组成.经纬度的有效范围为经度-180度到+ ...
- 如何理解 Spring Boot 中的 Starter ?
假如 没有 Spring Boot Starter,我们有两种方式来创建 Spring Bean. spring xml 模式 (远古模式,并不推荐) spring API 来创建 Spring Be ...