[问题] CX_Freeze产生单执行档?

楼主: Love1019 (爱与勇气的年代)   2014-07-24 22:29:43
Py乡民大家好
目前碰到了一个难题 - CX_freeze产生单个执行档.
但透过google还是没有能找到答案
似乎都是用来产生 .msi 或是 带有一堆数据库的exe
想问看看有没有什么办法可以产生单一档案?
其他的package ? py2exe ?
不然....还是只能回python 2.7 用 Pyinstaller ~"~
Pyinstaller 真的好用 QQ
======================================================
以下是我用于 CX_freeze 的 setup.py:
import sys
from cx_Freeze import setup, Executable
# Dependencies are automatically detected, but it might need fine tuning.
build_exe_options = {"packages": ["os"], "excludes": ["tkinter"]}
# GUI applications require a different base on Windows (the default is for a
# console application).
base = None
if sys.platform == "win32":
base = "Win32GUI"
setup( name = "Test",
version = "1.0",
description = "Good",
options = {"build_exe": build_exe_options},
executables = [Executable("test.pyw", base=base)])
==============================================================
以下是测试code:
import math
import os
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig,
_encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(281, 107)
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
self.pushButton = QtGui.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(100, 30, 71, 31))
self.pushButton.setObjectName(_fromUtf8("pushButton"))
MainWindow.setCentralWidget(self.centralwidget)
self.statusbar = QtGui.QStatusBar(MainWindow)
self.statusbar.setObjectName(_fromUtf8("statusbar"))
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow",
None))
self.pushButton.setText(_translate("MainWindow", "PTT", None))
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
作者: CoASH (天秤)   2014-08-15 23:44:00
暂时别用cxfreeze吧 他在python3有一些bug执行编译出的exe显示fatal python error:cannot getzipimporter instance现在很烦恼找不到替代的程式...

Links booklink

Contact Us: admin [ a t ] ucptt.com