设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 28676|回复: 9
打印 上一主题 下一主题

【转】利用cx_Freeze将py文件打包成exe文件(图文全解)

[复制链接]

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

跳转到指定楼层
楼主
发表于 2016-1-2 23:04:53 |只看该作者 |倒序浏览
更新cxfreeze项目地址:https://anthony-tuininga.github.io/cx_Freeze/

-----------------

转自 狼之舞蹈 的BLOG
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://keliang.blog.51cto.com/3359430/661884

python是一个非常非常优秀的编程语言,它最大的特性就是跨平台。python程序几乎可以在所有常见的平台中进行使用,而且大部分无需修改任何代码!不过,python也有一点点小缺憾(这个是由于自身本质决定,不能叫缺憾,不过在这就这么称呼吧),那就是python程序的执行必须要有解释器的参与。那么python的程序如何在没有解释器的平台上使用呢?很简单,将python程序打包成exe可执行文件即可!
在python中比较常用的python转exe方法有三种,分别是cx_freeze,py2exe,PyInstaller。py2exe恐怕是三者里面知名度最高的一个,但是同时相对来说它的打包质量恐怕也是最差的一个。pyinstaller打包很好,但是操作工序较为复杂。so个人还是推荐cx_freeze。
首先:cx_freeze下载地址: http://sourceforge.net/projects/cx-freeze/files/
接着,介绍一下cx_freeze的使用方法。
第一步:检查cx_freeze是否安装正确。
运行cmd,切换到cxfreeze.bat,然后执行 "cxfreeze -h" 看看能否出效果
如果安装正确,如图显示

如果显示的如下图片,请查看一下你的python安装路径

修改路径的办法
打开你的python安装文件夹,例如我的python安装文件夹在G盘,那么用记事本打开G:\python\Scripts\cxfreeze.bat
如图

修改路径到自己的安装路径

然后保存,关闭记事本,重新检验,看看是否正确。
第二步:如果安装正确,那么接下来的事情就非常简单了
正式开始打包,命令为:cxfreeze hello.py --target-dir dist
命令解释:hello.py 是你要打包的主文件、启动文件

Dist为要目标文件夹,打包后会生成dist目录,里面就有打包后的可执行文件。
注意:

只能指定一个要打包的模块,也就是启动模块
所有.py文件都不能有中文字符,否则会出现编码异常。
发布后,可执行文件执行路径不能有中文(最好也不要有空格)。
启动执行的文件中不要有下面这种判断,否则可执行文件执行会没有任何效果。
if __name__ == "__main__":
main()

双击生成的exe文件可以使用了是不是很高兴呢?怎么觉得启动的时候后面有个黑糊糊的窗口不舒服?那你在生成命令里面加个参数吧!例子:
cxfreeze hello.py --target-dir dist --base-name=123
over。如果你对生成有其他要求,请参见:
http://cx-freeze.sourceforge.net/cx_Freeze.html


#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

14

积分

新手上路

Rank: 1

沙发
发表于 2017-8-22 22:26:50 |只看该作者
crossin老师你好,我输入cxfreeze -h提示已经安装成功,然后我的Python27安装在D盘,打包文件mygame.py放在D盘下的python文件夹下,此文件夹下还有4张要使用的图片,程序可以正常运行,然后我在d:\Python27\Scripts\目录下输入cxfreeze hello.py --target-dir dist和正常的打包成功显示不一样,好像多出很多命令。然后我去dist目录下运行mygame.exe闪一下dos命令窗口就退出了。请问我这是打包成功还是没成功?
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

板凳
发表于 2017-8-23 22:48:50 |只看该作者
没成功吧,你应该在代码文件夹下打包,而且为什么是打包 hello.py
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

14

积分

新手上路

Rank: 1

地板
发表于 2020-2-22 15:53:07 |只看该作者
本帖最后由 miting 于 2020-2-22 15:56 编辑

crossin 老师我用cxfreeze -h验证安装成功了,但是打包的时候出现Traceback (most recent call last):
  File "f:\python3.8\lib\runpy.py", line 193, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "f:\python3.8\lib\runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "F:\PYTHON3.8\Scripts\cxfreeze.exe\__main__.py", line 9, in <module>
  File "f:\python3.8\lib\site-packages\cx_Freeze\main.py", line 165, in main
    freezer = cx_Freeze.Freezer(executables,
TypeError: __init__() missing 1 required positional argument: 'constantsModule'
咋办呢...

我使用的打包命令是F:\PYTHON3.8\lesson>cxfreeze lesson22.py --target-dir dist
回复

使用道具 举报

0

主题

0

好友

14

积分

新手上路

Rank: 1

5#
发表于 2020-2-22 15:56:03 |只看该作者
miting 发表于 2020-2-22 15:53
crossin 老师我用cxfreeze -h验证安装成功了,但是打包的时候出现Traceback (most recent call last):
  Fi ...

打包命令是F:\PYTHON3.8\lesson>cxfreeze lesson22.py --target-dir dist
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

6#
发表于 2020-2-22 18:09:05 |只看该作者
miting 发表于 2020-2-22 15:56
打包命令是F:\PYTHON3.8\lesson>cxfreeze lesson22.py --target-dir dist

https://bbs.crossincode.com/foru ... pid=15877&fromuid=3

这里跟你一样的问题,看下链接
可能新版本的bug
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

1

主题

0

好友

36

积分

新手上路

Rank: 1

7#
发表于 2020-3-4 11:13:48 |只看该作者
老师,我电脑是win7  32位的,安装的Python3.8版本,但安装cx_freeze不成功请教安装方法!!!!
回复

使用道具 举报

1

主题

0

好友

36

积分

新手上路

Rank: 1

8#
发表于 2020-3-4 11:47:16 |只看该作者
还有,老师提供的cx_freeze下载地址已经打不开了!!!!
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

9#
发表于 2020-3-4 21:17:35 |只看该作者
xuanyuandadi 发表于 2020-3-4 11:47
还有,老师提供的cx_freeze下载地址已经打不开了!!!!

https://anthony-tuininga.github.io/cx_Freeze/

可能不支持最新的python,用3.7试试
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-11-24 00:31 , Processed in 0.024933 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部