推广 热搜: csgo  vue  angelababy  2023  gps  新车  htc  落地  app  p2p 

如何在python中使用cx-freeze打包程序

   2023-07-11 网络整理佚名1740
核心提示:如何在中使用cx-打包程序?是自己要打包的程序名字pyc文件拷到打包项目的相应位置在一次项目中,同时用到了库和库,我打包exe后运行老是出现闪退,我刚开始还以为是脚本问题,但是脚本用解释器运行就不会出现错误,我真的一脸懵逼啊,于是我猜想会不会是在导入库时有bug,于是我做实验验证我的猜想,结果果真如我所料。打包时不能同时出现和这2个库,否则exe运行闪退。

如何在 中使用 cx-? 很多新手对此并不是很清楚。 为了帮助大家解决这个问题,下面小编就为大家详细讲解一下。 有这方面需求的可以过来学习。 希望你能有所收获。

首先写一个setup.py

1.py 2.py是你要打包的程序名

注意里面的四个绝对路径改为真实路径,不然会爆各种奇怪的错误,运行setup.py

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

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

然后就很容易报错如下图所示。 解决办法就是在自己的路径下一一找到这些.py文件,然后执行:-m+文件名.py然后将生成的.pyc文件复制到打包项目的对应位置

设置.py:

importsys
fromcx_Freezeimportsetup,Executable
importos
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
ifsys.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='educationsoftware',
options=options,
executables=executables
)

补充知识:关于.6打包的一个bug

当我编写脚本时,我喜欢从脚本生成exe。 我用的是.6,所以自然选择这个库来生成exe。

在一个项目中,同时使用了库和库。 我打包exe后,运行时总是崩溃。 一开始以为是脚本问题,但是用解释器运行脚本并没有报错。 我真的很困惑。 迫不得已,于是我就想是不是导入库的时候有bug,于是我做了一个实验来验证我的猜测,结果和我预想的一模一样。

.6 打包时这两个库不能同时出现,否则exe会崩溃。 。 。

阅读以上内容对您有帮助吗? 如果您想了解更多相关知识或者阅读更多相关文章,请关注茶卡编程网行业资讯频道,感谢您对洽卡编程网的支持。

 
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报
Powered By DESTOON