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实现带声音的摩斯码翻译实现方法
May 20 Python
python timestamp和datetime之间转换详解
Dec 11 Python
详解Django 中是否使用时区的区别
Jun 14 Python
python实现zabbix发送短信脚本
Sep 17 Python
python读取目录下最新的文件夹方法
Dec 24 Python
对Pytorch中Tensor的各种池化操作解析
Jan 03 Python
python json 递归打印所有json子节点信息的例子
Feb 27 Python
django admin 添加自定义链接方式
Mar 11 Python
使用python无账号无限制获取企查查信息的实例代码
Apr 17 Python
python中id函数运行方式
Jul 03 Python
Python爬虫中Selenium实现文件上传
Dec 04 Python
Python常用GUI框架原理解析汇总
Dec 07 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
PHP 网络开发详解之远程文件包含漏洞
2010/04/25 PHP
PHP批量采集下载美女图片的实现代码
2013/06/03 PHP
基于PHP对XML的操作详解
2013/06/07 PHP
ThinkPHP Where 条件中常用表达式示例(详解)
2017/03/31 PHP
PHP利用Mysql锁解决高并发的方法
2018/09/04 PHP
详细对比php中类继承和接口继承
2018/10/11 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
JavaScript 通过模式匹配实现重载
2010/08/12 Javascript
js window.print实现打印特定控件或内容
2013/09/16 Javascript
js显示当前日期时间和星期几
2015/10/22 Javascript
JS跨域请求外部服务器的资源
2017/02/06 Javascript
jQuery实现扑克正反面翻牌效果
2017/03/10 Javascript
微信小程序实现的canvas合成图片功能示例
2019/05/03 Javascript
webpack HappyPack实战详解
2019/10/08 Javascript
Vue.js中provide/inject实现响应式数据更新的方法示例
2019/10/16 Javascript
JS实现多功能计算器
2020/10/28 Javascript
vue实现购物车的小练习
2020/12/21 Vue.js
[02:47]3.19DOTA2发布会 国服成长历程回顾
2014/03/25 DOTA
Python文件读取的3种方法及路径转义
2015/06/21 Python
Python3 XML 获取雅虎天气的实现方法
2018/02/01 Python
python实现屏保计时器的示例代码
2018/08/08 Python
Pytorch卷积层手动初始化权值的实例
2019/08/17 Python
浅谈Python类中的self到底是干啥的
2019/11/11 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
2021/01/10 Python
HTML5触摸事件演化tap事件介绍
2016/03/25 HTML / CSS
Calzedonia美国官网:意大利风格袜子、打底裤和沙滩装
2018/07/19 全球购物
市场营销专科应届生求职信
2013/11/24 职场文书
最新结婚典礼主持词
2014/03/14 职场文书
庆元旦文艺演出主持词
2014/03/27 职场文书
个人委托书
2014/07/31 职场文书
党支部组织生活会整改方案
2014/09/30 职场文书
游戏开发中如何使用CocosCreator进行音效处理
2021/04/14 Javascript
Java 实战项目之家居购物商城系统详解流程
2021/11/11 Java/Android
使用vuex-persistedstate本地存储vuex
2022/04/29 Vue.js
讲解MySQL增删改操作
2022/05/06 MySQL
Java中的Kafka为什么性能这么快及4大核心详析
2022/09/23 Java/Android