pyttsx3使用pyinstaller打包失败

1.常见错误:  ModuleNotFoundError: No module named 'pyttsx3.drivers'

最直接的方式是 import pyttsx3.drivers

2.常见错误: 接下来会报错 ModuleNotFoundError: No module named 'pyttsx3.drivers.sapi5'

和上面一样的方法: import pyttsx3.drivers.sapi5

3.常见错误: 接下来是 pywintypes.com_error: (-2147221008, '尚未调用。', None, None)

这里先是导入 import pythoncom

接着在你用了线程的run里面 加上线程初始化 pythoncom.CoInitialize()

这个的用处是初始化线程

4.常见错误: 最后是pywintypes.com_error: (-2147352573, '找不到成员。', None, None)

然后找到 pyttsx3的目录:修改文件“<python路径>\Lib\site-packages\PyInstaller\loader\rthooks\pyi_rth_win32comgenpy.py”

直接让他不经过下面
import sys
# The win32com fixes aren't needed for Python 3.X
if sys.version_info >= (3, 0):
    pass
else:
<以下为原内容>

#-----------------------------------------------------------------------------
# Copyright (c) 2013-2017, PyInstaller Development Team.
#
# Distributed under the terms of the GNU General Public License with exception
# for distributing bootloader.
#
# The full license is in the file COPYING.txt, distributed with this software.
#-----------------------------------------------------------------------------


# The win32.client.gencache code must be allowed to create the cache in %temp%
# (user's temp). It is necessary to get the gencache code to use a suitable
# directory other than the default in lib\site-packages\win32com\client\gen_py.
# PyInstaller does not provide this directory structure and the frozen
# executable could be placed in a non-writable directory like 'C:\Program Files.
# That's the reason for %temp% directory.
#
# http://www.py2exe.org/index.cgi/UsingEnsureDispatch

import sys
# The win32com fixes aren't needed for Python 3.X
if sys.version_info >= (3, 0):
    pass
else:
    import atexit
    import os
    import shutil
    import tempfile


    # Put gen_py cache in temp directory.
    supportdir = tempfile.mkdtemp()
    # gen_py has to be put into directory 'gen_py'.
    genpydir = os.path.join(supportdir, 'gen_py')


    # Create 'gen_py' directory. This directory does not need
    # to contain '__init__.py' file.
    try:
        # win32com gencache cannot be put directly to 'supportdir' with any
        # random name. It has to be put in a directory called 'gen_py'.
        # This is the reason why to create this directory in supportdir'.
        os.makedirs(genpydir)
        # Remove temp directory at application exit and ignore any errors.
        atexit.register(shutil.rmtree, supportdir, ignore_errors=True)
    except OSError:
        pass


    # Override the default path to gen_py cache.
    import win32com
    win32com.__gen_path__ = genpydir


    # The attribute __loader__ makes module 'pkg_resources' working but On Windows
    # it breaks pywin32 (win32com) and test 'basic/test_pyttsx' will fail. Just
    # removing that attribute for win32com fixes that and gencache is created properly.
    if hasattr(win32com, '__loader__'):
        del win32com.__loader__


    # Ensure genpydir is in 'gen_py' module paths.
    import win32com.gen_py
    win32com.gen_py.__path__.insert(0, genpydir)

原文地址:http://www.lolpzili.com/index.php/archives/20/#comment-2

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值