尝试使用 cx_freeze 将 python 文件转换为可执行文件时出错

Posted

技术标签:

【中文标题】尝试使用 cx_freeze 将 python 文件转换为可执行文件时出错【英文标题】:Error on trying to convert a python file into an executable with cx_freeze 【发布时间】:2012-12-29 12:11:33 【问题描述】:

我有 PyQt 的代码:

import sys

from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.QtWebKit import *

def main():
    page = raw_input('Escriu una web: ')
    app = QApplication(sys.argv)
    view = QWebView()
    view.settings().setAttribute(QWebSettings.javascriptEnabled, True)
    view.load(QUrl(page))
    view.setWindowTitle('Titanicus 0.1')
    view.show()
    app.exec_()

if __name__ == '__main__':
    main()

我的 setup.py 文件是这样的:

    import sys
    from cx_Freeze import setup, Executable

    setup(
        name = "On Dijkstra's Algorithm",
        version = "3.1",
        description = "A Dijkstra's Algorithm help tool.",
        executables = [Executable("nautilus.py")])

我已经建立了文件夹,但是当我尝试打开新的 exe 文件时,它返回了那个错误:

File "ExtensionLoader_PyQt4_QtGui.py", line 11, in <module>
ImportError: No module named atexit

请帮忙!

【问题讨论】:

【参考方案1】:

我会尝试将options = "build_exe" : "includes" : "atexit" 添加到setup.py

参考。 https://bitbucket.org/reclosedev/cx_freeze/src/f3cacc2fd45a/samples/PyQt4/setup.py

【讨论】:

【参考方案2】:

试试这样的:

#!/usr/bin/env python
#-*- coding:utf-8 -*-

from PyQt4 import QtGui, QtCore, QtWebKit, QtNetwork

class myWindow(QtWebKit.QWebView):
    def __init__(self, parent=None):
        super(myWindow, self).__init__(parent)
        self.setWindowTitle('Titanicus 0.1')
        self.settings().setAttribute(QtWebKit.QWebSettings.JavascriptEnabled, True)

        page = raw_input('Escriu una web: ')
        self.load(QtCore.QUrl(page))

if __name__ == "__main__":
    import  sys

    app  = QtGui.QApplication(sys.argv)
    main = myWindow()
    main.show()
    sys.exit(app.exec_())

【讨论】:

不错,这种代码方式更好,但它在输入行中返回 EOFError。为什么? 你是如何安装 cx_freeze 的?如果您是通过 pip 或 easy_install 安装的,请使用 pip remove cx_freeze 将其删除 下载源代码 from here 并按照 readme 说明进行安装

以上是关于尝试使用 cx_freeze 将 python 文件转换为可执行文件时出错的主要内容,如果未能解决你的问题,请参考以下文章

我正在尝试使用 cx_Freeze (windows) 将 PyEnchant 库包含到我的 exe 文件中

尝试使用 cx_Freeze 编译时 Python 崩溃

类型错误:列表索引必须是整数或切片,而不是 str 尝试使用 cx_Freeze 将 .py 文件转换为 .exe 时

Python 2.7 Cx_Freeze: ImportError: No module named __startup__

Python 2.7 Cx_Freeze: ImportError: No module named __startup__

找不到模块'cx_Freeze__init__'