编译python3&的问题pyqt4与cx_freeze

时间:2012-03-13 11:03:09

标签: python windows python-3.x pyqt4 cx-freeze

我正在尝试使用cx_Freeze编译一个使用Python3和PyQt4编写的简单脚本,但是我有三个问题我无法理解。

  1. 我无法显示图标。我正在使用一个已编译的资源文件,即导入包含资源的.py,我尝试按照建议here,将imageformats文件夹复制到我的项目文件夹,但似乎没有任何效果。

  2. 我没有使用包含tcl和ttk的severl python模块,所以我将它们添加到excludes选项中。但是,它们似乎仍然被添加。

  3. 当我尝试使用base='Win32GUI'进行编译时,运行创建的exe会引发异常:'NoneType' has no attribute 'encoding'

  4. 我非常确定我的设置脚本有问题,因为cx_Freeze文档不是很冗长,所以希望有人可以指出问题所在。这是设置脚本。我不会发布我编译的脚本,因为它很长,但如果需要我会尝试创建一个简洁版本进行测试。

    from cx_Freeze import setup, Executable
    
    exe = Executable(
        script='cconvert.py',
        base='Win32GUI'
    )
    
    options = dict(
        excludes=['curses', 'email', 'tcl', 'ttk']
    )
    
    setup(
        name="Coord Convertor",
        version="0.1",
        description="A Coordinate converter from DMS to DD",
        requires=['pyqt4 (>=4.8)', 'dtlibs (>=0.4.1)'],
        data_files=['imageformats'],
        executables=[exe],
        options={'build-exe': options}
    )
    

2 个答案:

答案 0 :(得分:6)

解决。除了托马斯的指针之外,我还需要'imageformats'在选项中的'include-files'下,而不是'data_files'。我的最终脚本如下所示:

from cx_Freeze import setup, Executable

exe = Executable(
    script='cconvert.pyw',
    base='Win32GUI'
)

options = dict(
    excludes=['curses', 'email', 'tcl', 'ttk', 'tkinter'],
    include_files=['imageformats']
)

setup(
    name="Coord Convertor",
    version="0.1",
    description="A Coordinate converter from DMS to DD",
    requires=['pyqt4 (>=4.8)', 'dtlibs (>=0.4.1)'],
    executables=[exe],
    options={'build_exe': options}
)

答案 1 :(得分:3)

(请注意1。)

2:在options = {' build-exe' ...中,我认为它需要是build_exe(下划线而不是破折号)。

3:您是否尝试在任何地方访问sys.stdout.encoding之类的内容?使用Win32GUI库时,sys.stdout将为None。即使是print()电话也可能会触发。