【问题标题】:Converting python files and PyQt into a windows executable?将 python 文件和 PyQt 转换为 Windows 可执行文件?
【发布时间】:2014-08-07 09:26:52
【问题描述】:

全部,

我开发了一个由 PyQt 开发的 GUI 控制的 python 程序。这个 GUI 文件,后来被转换为 python(使用 pyuic4)实现了大约 4 个其他 python 文件,包括一个“主文件”。我如何将所有这些转换为一个“可双击”的 .exe 文件?注意:当我运行我的主文件时,我的程序和 GUI 都可以工作。

问候

【问题讨论】:

    标签: python windows python-2.7 pyqt4 executable


    【解决方案1】:

    您可以使用 cxFreeze 构建可执行文件:http://cx-freeze.sourceforge.net/

    但是,会有很多文件,但您可以独立使用您的应用。

    此外,您应该准确地导入模块以减少构建的大小。我的脚本(大约 200KB)是在 200MB 的怪物中构建的(使用 SciPy 和 Qt4)。

    附上构建脚本示例:

    #coding=utf-8
    
    from cx_Freeze import setup, Executable
    
    includes = ["atexit"] 
    
    buildOptions = dict(
        create_shared_zip=False,
        append_script_to_exe=True,
        includes=includes
    )
    
    executables = [
        Executable(
            script='main.py',
            targetName='projectname.exe',
            base="Win32GUI" # THIS ONE IS IMPORTANT FOR GUI APPLICATION
        )
    ]
    
    setup(
        name="ProjectName",
        version="1.0",
        description="",
        options=dict(build_exe=buildOptions),
        executables=executables
    )
    

    【讨论】:

    • "Win32GUI" 这对我来说是一样的吗?看到我在 QtDesigner for Windows 64 位开发?另外,我是否需要将在我的代码中导入的其他文件包含在其中?或者它会识别它们并手动将它们组合成一个.exe,只要它在同一目录中?
    • 是的,我也在使用 64 位系统/python/qt4。您应该添加(到 buildOptions)要成为 .exe 的文件。 Python“导入”依赖项将主要由 cxFreeze 自动包含。但是,也有一些例外: - stackoverflow.com/questions/8765568/…; - 'scipy.special._ufuncs_cxx'; - 'scipy.sparse.csgraph._validation'; - 'scipy.sparse.linalg.dsolve'; - 'scipy.integrate.vode'; - 'scipy.integrate.lsoda'; - 'numpy.core.multiarray'; - 也许更多。
    • 太棒了,我现在要测试一下。是否有您发现有效的命令/某些标志?
    • 对不起,显然不是'buildOptions',而是'executables'。旗帜?比如什么?
    • 我在之前的评论中给了你一个链接。只需将模块名称添加到“包含”列表即可。
    【解决方案2】:

    有许多工具可以将 Python 应用程序转换为可执行文件。我推荐使用 cx_Freeze:http://cx-freeze.readthedocs.org/en/latest/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-04
      • 2010-12-16
      • 1970-01-01
      • 2011-09-04
      • 2010-11-14
      • 1970-01-01
      相关资源
      最近更新 更多