[win32com错误,带有cx_freeze和pyttsx

问题描述 投票:1回答:2

大家好,我想冻结一个python软件以进行分发。问题是使用cx_freeze将其冻结后,我运行了它,它在我的开发计算机(win 7)上运行良好,但是当我将其发送到测试计算机(XP 32位XP sp3)时,出现此错误

Traceback(mostresent call last):
File "C:Python27\lib\site-packages\cx_Freeze\initscripts\Console.py", line27, in <module?
File "timeTracker.py", line 555, in <module>
File "timeTracker.py", line 381, in __init__
File "timeTracker.py", line 427, in runTimeThread
File "timeTracker.py", line 494, in __init__
File "timeTracker.py", line 118, in __init__
File "C:Python27\lib\site-packages\pyttsx1.1-py2.7.egg\pyttsx\__init__.py", line 39, in init
File "C:Python27\lib\site-packages\pyttsx1.1-py2.7.egg\pyttsx\engine.py", line 45, in __init__
File "C:Python27\lib\site-packages\pyttsx1.1-py2.7.egg\pyttsx\driver.py", line 66, in __init__
File "C:Python27\lib\site-packages\pyttsx1.1-py2.7.egg\pyttsx\drivers\sapi5.py", line 37, in buildDriver
File "C:Python27\lib\site-packages\pyttsx1.1-py2.7.egg\pyttsx\drivers\sapi5.py", line 46, in __init__
File "C:Python27\lib\site-packages\win32com\client\__init__.py", line 317, in WithEvents
AttributeError: 'NoneType' object has no attribute 'CLSID'

这是我的setup.py

import sys
from cx_Freeze import setup, Executable
includes =['atexit']
packages = ['pyttsx','win32com.server','win32com.client']
base = None
if sys.platform == "win32":
    base = "Win32GUI"
setup(
        name = "timeTracker",
        version = "1.0.0",
        description = "Keep track of your time take control of your life",
        options = {"build_exe" : {"includes" : includes, "packages": packages }},
        executables = [Executable("timeTracker.py", base = base)])

在setup.py中,我尝试将'win32com.gen_py'添加到软件包列表中,但出现错误

No module call 'win32com.gen_py'
python pywin32 cx-freeze
2个回答
1
投票

似乎pyttsx在Windows XP上有问题。经过仔细测试搜索后,我得出的结论是Windows XP对语音引擎没有任何测试,这就是pyttsx失败的原因


1
投票

我建议您使用pyttsx3。只要您更改语音引擎以使其适合所使用的计算机(例如适用于Windows 10的sapi 5),它的方式就会更快,更容易编程,并且可以与所有设备一起使用。

© www.soinside.com 2019 - 2024. All rights reserved.