将Python文件和PyQt转换为Windows可执行文件?

3

大家好,

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

祝好

2个回答

4
您可以使用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” 对我来说是否相同?因为我是在 Windows 64 位上使用 QtDesigner 进行开发的。此外,我需要将其他导入到我的代码中的文件包含在内吗?或者只要它们在同一个目录中,它就会识别它们并手动将所有内容合并为一个 .exe 文件? - sudobangbang
1
是的,我也在使用64位系统/Python/Qt4。你应该将想要成为.exe文件的文件添加到buildOptions中。Python的“import”依赖关系大多会被cxFreeze自动包含。但是,也有一些例外:
  • https://dev59.com/z1_Va4cB1Zd3GeqPPAJz;
  • 'scipy.special._ufuncs_cxx';
  • 'scipy.sparse.csgraph._validation';
  • 'scipy.sparse.linalg.dsolve';
  • 'scipy.integrate.vode';
  • 'scipy.integrate.lsoda';
  • 'numpy.core.multiarray';
  • 也许还有更多。
- soupault
抱歉,显然不是针对“buildOptions”,而是针对“executables”。标志?比如什么? - soupault
嗯,我在导入 matplotlib 时遇到了错误。有没有什么方法可以通过一个标志来修复这个问题?错误信息是:'ImportError:No module named backend_tkagg'。 - sudobangbang
1
我在之前的评论中给了你一个链接。只需将模块名称添加到“includes”列表中即可。 - soupault
显示剩余2条评论

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接