gpt4 book ai didi

python:win32com 和 cx_Freeze - 错误

转载 作者:行者123 更新时间:2023-12-01 05:33:27 26 4
gpt4 key购买 nike

我正在尝试使用 cx_Freeze 编译 Python 3.3 脚本。该脚本使用win32com.client来控制MediaMonkey 。当我直接运行它时,效果非常好。但是当我编译它时,它抛出了这个异常。

Traceback (most recent call last):
File "O:\Python\3\lib\site-packages\cx_Freeze\initscripts\Console3.py", line 27, in <module>
exec(code, m.__dict__)
File "test.py", line 6, in <module>
sdb = win32com.client.DispatchWithEvents("SongsDB.SDBApplication", MMEventHandler)
File "O:\Python\3\lib\site-packages\win32com\client\__init__.py", line 260, in
DispatchWithEvents
clsid = disp_class.CLSID
AttributeError: 'NoneType' object has no attribute 'CLSID'

当我尝试编译一个使用 win32com.client 的非常短的脚本时,它甚至不起作用:

import win32com.client

class MMEventHandler:
pass

sdb = win32com.client.DispatchWithEvents("SongsDB.SDBApplication", MMEventHandler)

这是我的 setup.py 脚本:

from cx_Freeze import setup, Executable


includes = []
excludes = []
packages = ['win32com', 'shlex', 'os', 'pythoncom', 'base64', 'tornado']
filename = "test.py"
setup(
name = 'Test',
version = '0.1',
description = 'test',
author = 'no',
author_email = 'someting@my.org',
options = {'build_exe': {
'excludes':excludes,
'packages':packages,
'includes':includes
}},
executables = [Executable(filename, base = None, icon = None)])

最佳答案

重新发布作为答案,总结一下:

对于 cx_Freeze 4.3.2,我进行了更改,以便它仅复制名称为有效 Python 标识符的模块(以便可以导入它们)。但是,win32com 似乎依赖于以下模块:

win32com\gen_py\E602ED16-8EF9-4F08-B09F-6F6E8306C51Bx0x1x0.py

文件名中的连字符 (-) 使其不是有效的 Python 标识符,因此不会被复制。我有opened an issue对于 cx_Freeze。同时,解决方法是降级到 cx_Freeze 4.3.1,您可以下载 from SourceForge .

此外,我认为这些模块是在您第一次包装 COM 对象时生成的。因此,请确保在卡住代码之前运行代码。

关于python:win32com 和 cx_Freeze - 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19662605/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com