鱼C论坛

 找回密码
 立即注册
查看: 20720|回复: 96

[技术交流] 利用cx_Freeze将py文件打包成exe文件

  [复制链接]
发表于 2014-8-4 23:10:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 ~风介~ 于 2014-9-2 00:16 编辑

     本文出自 “老爸的蒸面条” 博客(有改动),请务必保留此出处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下载地址:https://pypi.python.org/pypi?:action=display&name=cx_Freeze&version=4.3.3根据你的python版本下载指定的版本哦,如果安装完后Python32\Scripts中缺少cxfreeze.bat文件可以参考以下截图创建:

3.jpg

    其次、介绍一下cx_freeze的使用方法。第一步:检查cx_freeze是否安装正确。运行cmd,切换到cxfreeze.bat,然后执行 "cxfreeze -h" 看看能否出效果如果安装正确,如图显示:

1.jpg

    最后、如果安装正确,那么接下来的事情就非常简单了。正式开始打包命令为:cxfreeze py文件绝对路径 --target-dir 保存文件夹绝对路径 (如果是图形界面程序则在末尾加上--base-name=win32gui)。比如说:cxfreeze e:\hello.py --target-dir e:\test 以及cxfreeze e:\hello.py --target-dir e:\test --base-name=win32gui。打包的文件和文件夹最好都放在根目录!

     

   注:cx_Freeze打包方法较多,本文只介绍其中一种。
          打包出错的参考以下帖子http://bbs.fishc.com/forum.php?mod=viewthread&tid=51657&page=





评分

参与人数 1荣誉 +1 收起 理由
poiulp + 1 感谢楼主无私奉献!

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-4 23:39:47 | 显示全部楼层
顶。。。。。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-5 00:50:09 | 显示全部楼层
支持了 来学习下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-5 02:37:23 | 显示全部楼层
那打开来还是那个黑黑的界面嘛。。。。

点评

如果py文件本来就是有界面的打包后也有界面;如果本来就没有界面,打包后怎么会有界面?打包后执行不需要Python解释器,这和在cmd中调用Python解释器执行py文件差太多了!  详情 回复 发表于 2014-8-5 07:16
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-5 07:16:13 | 显示全部楼层
墙角君 发表于 2014-8-5 02:37
那打开来还是那个黑黑的界面嘛。。。。

如果py文件本来就是有界面的打包后也有界面;如果本来就没有界面,打包后怎么会有界面?打包后执行不需要Python解释器,这和在cmd中调用Python解释器执行py文件差太多了!{:7_181:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2014-8-12 09:59:32 | 显示全部楼层
支持!最近一直在找Python3的打包工具,谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-26 11:36:33 | 显示全部楼层
试了几次都打包失败。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-26 12:37:04 | 显示全部楼层
我是桃川人 发表于 2014-8-26 11:36
试了几次都打包失败。

有图有真相!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-27 08:36:20 | 显示全部楼层

代码是你写的youdao.py
  1. #!/usr/bin/python
  2. #CountCirclePlus.py

  3. import urllib.request
  4. import re
  5. import json
  6. import sys
  7. from PyQt5.QtWidgets import (QWidget,QApplication,QGridLayout,QLabel,QLineEdit,
  8.                              QPushButton)

  9.             
  10. class YoudaoDict(QWidget):
  11.     def __init__(self,parent = None):
  12.         super().__init__()
  13.         self.PI = 3.1416
  14.         self.setWindowTitle('youdao')
  15.         self.Label1 = QLabel('English')
  16.         self.Label2 = QLabel('chinese')
  17.         self.LineEdit1 = QLineEdit()
  18.         self.LineEdit2 = QLineEdit()
  19.         self.translateButton = QPushButton()
  20.         self.translateButton.setText('Translation')
  21.         self.grid = QGridLayout()
  22.         self.grid.setSpacing(10)
  23.         self.grid.addWidget(self.Label1,1,0)
  24.         self.grid.addWidget(self.LineEdit1,1,1)
  25.         self.grid.addWidget(self.Label2,2,0)
  26.         self.grid.addWidget(self.LineEdit2,2,1)
  27.         self.grid.addWidget(self.translateButton,2,2)
  28.         self.setLayout(self.grid)
  29.         self.resize(300,150)
  30.         self.translateButton.clicked.connect(self.translate)
  31.       

  32.     def translate(self):
  33.         self.url = 'http://fanyi.youdao.com/openapi.do'  
  34.         self.key = '695028818'
  35.         self.keyfrom = 'nicomochina'
  36.         words = self.LineEdit1.text()
  37.         url = self.url + '?keyfrom=' + self.keyfrom + '&key='+self.key + '&type=data&doctype=json&version=1.1&q=' + words
  38.         page = urllib.request.urlopen(url)
  39.         result = page.read().decode("utf8")
  40.         json_result = json.loads(result)  
  41.         json_result = json_result["translation"]  
  42.         for i in json_result:  
  43.           self.LineEdit2.setText(i)


  44. #if __name__ == '__main__':
  45.     app = QApplication(sys.argv)
  46.     youdaodict = YoudaoDict()
  47.     youdaodict.show()
  48.     sys.exit(app.exec_())
复制代码

已经去掉中文,其他情况如图:
QQ截图20140827083624.png

QQ截图20140827083442.png

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-28 09:46:45 | 显示全部楼层
支持楼主~很受用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-28 20:05:33 | 显示全部楼层
学习了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-28 20:06:17 | 显示全部楼层
去些时候弄总是有些错误,不过解决了!谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-29 12:36:08 | 显示全部楼层
来学习学习。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-29 14:33:58 | 显示全部楼层
打包了不能运行。肿么破。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-9-1 22:01:51 | 显示全部楼层
打包出现错误啊·1!!  和9L那个错误一样·1!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-1 22:51:36 | 显示全部楼层
我是桃川人 发表于 2014-8-27 08:36
代码是你写的youdao.py

已经去掉中文,其他情况如图:

抱歉,之前没注意到!首先,你要看一下你装pyqt没有?代码能在你的机器上跑不?另外你的cxfreeze装对了没有?你打包过其它pyqt的程序成功过了没有?其次,楼主在win6.1 x64 打包没有出问题,至于其它平台没有试过,至于会不会有平台方面的差异,哥们要自己bing下下啦~一起努力,共同进步!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-1 22:52:26 | 显示全部楼层
无所谓无的 发表于 2014-9-1 22:01
打包出现错误啊·1!!  和9L那个错误一样·1!

看16L~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-9-1 23:56:03 | 显示全部楼层

打包成功了····我装 python 3.40 就可以了 3.41不行 对 了self.Label1.returnPressed.connect(self.translate) Label链接回车键槽为什么这样不行的啊···  还有 我想问下你用什么IDE 写PYQT 的·!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-2 00:14:48 | 显示全部楼层
无所谓无的 发表于 2014-9-1 23:56
打包成功了····我装 python 3.40 就可以了 3.41不行 对 了self.Label1.returnPressed.connect(self.t ...

之前有过:http://bbs.fishc.com/forum.php?m ... tid=51657&page=
python3.40
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-9-2 10:39:31 | 显示全部楼层
~风介~ 发表于 2014-9-2 00:14
之前有过:http://bbs.fishc.com/forum.php?mod=viewthread&tid=51657&page=
python3.40

``郁闷··我问了你很多次 你用什么IDE 写PYQT 的 告诉下嘛!!!:dizzy:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 20:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表