翼度科技»论坛 编程开发 python 查看内容

python打包exe总结 pyinstaller py2exe

4

主题

4

帖子

12

积分

新手上路

Rank: 1

积分
12
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:
  1. from distutils.core import setup
  2. import py2exe
  3. setup(
  4.     zipfile=None,
  5.     console = [{"script":'clipboard.py'}] #要编译的文件 console表示生成控制台程序 windows是windows程序
复制代码
  1.     options = {
  2.         "py2exe" :
  3.             {
  4.                 "compressed" : 1, # 压缩
  5.                 "optimize" : 2,
  6.                 "bundle_files" : 1, # 所有文件打包成一个 exe 文件  可选选项0,1,2,3 详细见下方
  7.             }
  8.     })
复制代码
常用参数
setup:核心函数 
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好用一些 成熟一些 
 
 

来源:https://www.cnblogs.com/mltooo/p/17513725.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具