python 使用cx-freeze打包程序的实现


Posted in Python onMarch 14, 2020

python环境 3.6.5 win7 linux环境同理

先尝试了PyInstaller ,打包时一直提示 no module named gtk 而gtk 又依赖pygobject ,尝试安装几次之后失败放弃

改用cx-freeze

首先写一个 setup.py

1.py 2.py 是自己要打包的程序名字

注意里面的四个绝对路径改成真实的路径,否则会爆各种奇怪的错误,运行 python setup.py install

执行exe 比如下图,在python终端里面输入 import _tkinter是可以的,但是打包以后会这样报错,

引入 tcl86t.dll和tk86t.dll 后问题解决

python 使用cx-freeze打包程序的实现

然后很容易会报错如下图,解决办法是一个一个的在自己的python路径中找到这些.py文件,然后执行:python -m compileall +文件名.py 再把生成的.pyc文件拷到打包项目的相应位置

python 使用cx-freeze打包程序的实现

setup.py :

import sys
from cx_Freeze import setup, Executable
import os
os.environ['TCL_LIBRARY'] = "C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36\\tcl\\tcl8.6"
os.environ['TK_LIBRARY'] = "C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36\\tcl\\tk8.6"

include_files = [r"C:\Users\Administrator\AppData\Local\Programs\Python\Python36\DLLs\tcl86t.dll",
         r"C:\Users\Administrator\AppData\Local\Programs\Python\Python36\DLLs\tk86t.dll"]

#打包所需要的第三库
build_exe_options = {"packages": ["glob", "os", "numpy", "datetime", "PIL", "matplotlib", "scipy", "_tkinter"],
           "includes ": ['numpy','glob','os','datetime','datetime','PIL', "matplotlib", "matplotlib.pyplot" ,"scipy", "_tkinter"]}

base = None
if sys.platform == 'win32':
  base = 'Win32GUI'

options = {
  'build_exe': {
    'includes': 'atexit' ,'include_files': include_files
  }
}

executables = [
  Executable('1.py', base=base),
  Executable('2.py')
]

setup(name='education',
   version='0.1',
   description='education software',
   options=options,
   executables=executables
   )

补充知识:关于python3.6 cxfreeze打包 的一个Bug

我写python脚本喜欢把脚本生成exe,我用的是python3.6,自然就选择了cxfreeze这个库来生成exe

在一次项目中,同时用到了requests库和base64库,我打包exe后运行老是出现闪退,我刚开始还以为是脚本问题,但是脚本用python解释器运行就不会出现错误,我真的一脸懵逼啊,于是我猜想会不会是cxfreeze在导入库时有bug,于是我做实验验证我的猜想,结果果真如我所料。

python3.6 cxfreeze 打包时不能同时出现requests和base64这2个库,否则exe运行闪退。。。

以上这篇python 使用cx-freeze打包程序的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的函数的一些高阶特性
Apr 27 Python
python学习之面向对象【入门初级篇】
Jan 21 Python
python字符串string的内置方法实例详解
May 14 Python
基于Python列表解析(列表推导式)
Jun 23 Python
python实现广度优先搜索过程解析
Oct 19 Python
使用python绘制二维图形示例
Nov 22 Python
Python3 把一个列表按指定数目分成多个列表的方式
Dec 25 Python
通过 Python 和 OpenCV 实现目标数量监控
Jan 05 Python
Django admin 实现search_fields精确查询实例
Mar 30 Python
快速解释如何使用pandas的inplace参数的使用
Jul 23 Python
Python grequests模块使用场景及代码实例
Aug 10 Python
Python+Selenium自动化环境搭建与操作基础详解
Mar 13 Python
python matplotlib imshow热图坐标替换/映射实例
Mar 14 #Python
python pyqtgraph 保存图片到本地的实例
Mar 14 #Python
Python 实现将大图切片成小图,将小图组合成大图的例子
Mar 14 #Python
python numpy实现多次循环读取文件 等间隔过滤数据示例
Mar 14 #Python
python matplotlib 绘图 和 dpi对应关系详解
Mar 14 #Python
python 工具 字符串转numpy浮点数组的实现
Mar 14 #Python
python tkinter GUI绘制,以及点击更新显示图片代码
Mar 14 #Python
You might like
为查询结果建立向后/向前按钮
2006/10/09 PHP
注意:php5.4删除了session_unregister函数
2013/08/05 PHP
php cookie使用方法学习笔记分享
2013/11/07 PHP
PHP中$GLOBALS与global的区别详解
2019/03/21 PHP
Laravel5框架自定义错误页面配置操作示例
2019/04/17 PHP
PHP读取文件或采集时解决中文乱码
2021/03/09 PHP
修改发贴的编辑功能
2007/03/07 Javascript
基于jQuery的树控件实现代码(asp.net+json)
2010/07/11 Javascript
获取数组中最大最小值方法js代码(自写)
2013/08/12 Javascript
js实现鼠标感应图片展示的方法
2015/02/27 Javascript
jquery 插件实现瀑布流图片展示实例
2015/04/03 Javascript
JQuery判断checkbox是否选中及其它复选框操作方法合集
2015/06/01 Javascript
深入解析Backbone.js框架的依赖库Underscore.js的作用
2016/05/07 Javascript
jQuery使用正则表达式限制文本框只能输入数字
2016/06/18 Javascript
JavaScript中三种常见的排序方法
2017/02/24 Javascript
js CSS3实现卡牌旋转切换效果
2017/07/04 Javascript
Vue2.0用 watch 观察 prop 变化(不触发)
2017/09/08 Javascript
Angular脚手架开发的实现步骤
2019/04/09 Javascript
python Selenium爬取内容并存储至MySQL数据库的实现代码
2017/03/16 Python
numpy.delete删除一列或多列的方法
2018/04/03 Python
Python实现的基于优先等级分配糖果问题算法示例
2018/04/25 Python
Python对象的属性访问过程详解
2020/03/05 Python
CSS3 mask 遮罩的具体使用方法
2017/11/03 HTML / CSS
CSS3 实现倒计时效果
2020/11/25 HTML / CSS
Canvas中设置width与height的问题浅析
2018/11/01 HTML / CSS
ghd官网:英国ghd直发器品牌
2018/05/04 全球购物
高二历史教学反思
2014/01/25 职场文书
护士自我鉴定怎么写
2014/02/07 职场文书
服务型党组织建设典型材料
2014/05/07 职场文书
先进事迹材料范文
2014/12/29 职场文书
2015年国税春训心得体会
2015/03/09 职场文书
赢在执行观后感
2015/06/16 职场文书
MySQL主从复制断开的常用修复方法
2021/04/07 MySQL
MySQL 百万级数据的4种查询优化方式
2021/06/07 MySQL
mongodb数据库迁移变更的解决方案
2021/09/04 MongoDB
【海涛DOTA】D-cup邀请赛NV.cn vs DT.Love
2022/04/01 DOTA