使用pyttsx包

时间:2016-02-13 13:57:20

标签: python python-3.x python-2.7 pyttsx

今天,在浏览 Quora 时,我遇到了answers关于python可以做的惊人事情。我尝试使用 pyttsx 文本到语音转换器,这给了我一个No module named Win32com.client错误。

这个错误有很多答案,但大多数答案都不够(至少对我而言),因为建议的解决方案并不符合要求。

对于初学者,我使用的是Python2.7,C:/Windows/System32中没有任何DLL或任何与关键字' pywin32'相关的脚本。在我的C:/Python27/Scripts文件夹中。我需要一个具体的解决方案。

这是我到目前为止所尝试的:

>>> import pyttsx
>>> engine = pyttsx.init()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\pyttsx\__init__.py", line 39, in init
eng = Engine(driverName, debug)
File "C:\Python27\lib\site-packages\pyttsx\engine.py", line 45, in __init__
self.proxy = driver.DriverProxy(weakref.proxy(self), driverName, debug)
File "C:\Python27\lib\site-packages\pyttsx\driver.py", line 64, in __init__
self._module = __import__(name, globals(), locals(), [driverName])
File "C:\Python27\lib\site-packages\pyttsx\drivers\sapi5.py", line 19, in <module>
import win32com.client
ImportError: No module named win32com.client

解决方案:从This Link安装软件包。根据您的Python安装类型(32/64位)选择32/64位版本。

4 个答案:

答案 0 :(得分:7)

我遇到了同样的问题。我从here安装了pywin32(根据您的喜好下载构建版本)。我下载了我的python版本(32位)。

安装后我可以导入win32com.client

import win32com.client

答案 1 :(得分:1)

由于这是一段时间以前的,并且链接有些过时,因此只需运行

pip install pywin32

将为您的环境安装正确的版本。您应该能够毫无问题地运行import win32com.client。确保重新启动内核以查看更改。

答案 2 :(得分:0)

我也遇到了同样的问题,并没有找到任何令人满意的解决方案。 然后我只是按照2步和Voila :)  1)首先,你必须从下载 pywin32-217.win32-py2.7 https://sourceforge.net/projects/pywin32/files/pywin32/Build%20217/)。

2)然后你必须安装它

pip install pypiwin32

再次运行代码,您将获得预期的输出。

答案 3 :(得分:0)

我也有同样的问题。我通过以下步骤解决了该问题:

1。打开cmd(以管理员模式运行)。

2。输入命令:

pip install pywin32

const data = [
  {id: 1, title: 'foo', children: [
    {id: 11, parentId: 1, title: 'bar'},
    {id: 12, parentId: 1, title: 'baz', children: [
      {id: 121, parentId: 12, title: 'qux'},
      {id: 122, parentId: 12, title: 'quz'}
    ]},
    {id: 13, parentId: 1, title: 'corge'}
  ]}
];

function findDistance(data, id) {
  for(const elem of data){
    if(elem.id === id) return 0
    if(!elem.children) continue
    const value = findDistance(elem.children, id)
    if(!Number.isNaN(value)) return value + 1
  }
  //Not found, return NaN
  return NaN
}

console.log(findDistance(data, 1))   //0
console.log(findDistance(data, 12))  //1
console.log(findDistance(data, 122)) //2
console.log(findDistance(data, 13))  //1
console.log(findDistance(data, 0))   //Not found, NaN

我希望这对您有用,对我也有用。