成功解决ModuleNotFoundError: No module named engine
【摘要】 成功解决ModuleNotFoundError: No module named 'engine'
目录
解决问题
解决思路
解决方法
解决问题
ModuleNotFoundError: No module named 'engine'
解决思路
...
成功解决ModuleNotFoundError: No module named 'engine'
目录
解决问题
ModuleNotFoundError: No module named 'engine'
解决思路
找不到模块错误:没有名为“engine”的模块
解决方法
相关文章
Py之pyttsx:pyttsx/pyttsx3的简介、安装、使用方法之详细攻略
-
def init Found at: pyttsx.__init__
-
-
def init(driverName=None, debug=False):
-
'''
-
Constructs a new TTS engine instance or reuses the existing instance for
-
the driver name.
-
-
@param driverName: Name of the platform specific driver to use. If
-
None, selects the default driver for the operating system.
-
@type: str
-
@param debug: Debugging output enabled or not
-
@type debug: bool
-
@return: Engine instance
-
@rtype: L{engine.Engine}
-
'''
-
try:
-
eng = _activeEngines[driverName]
-
except KeyError:
-
eng = Engine(driverName, debug)
-
_activeEngines[driverName] = eng
-
return eng
-
-
-
class WeakValueDictionary(collections.MutableMapping):
-
"""Mapping class that references values weakly.
-
-
Entries in the dictionary will be discarded when no strong
-
reference to the value exists anymore
-
"""
-
# We inherit the constructor without worrying about the input
-
# dictionary; since it uses our .update() method, we get the right
-
# checks (if the other dictionary is a WeakValueDictionary,
-
# objects are unwrapped on the way out, and we always wrap on the
-
# way in).
-
-
def __init__(*args, **kw):
-
if not args:
-
raise TypeError("descriptor '__init__' of 'WeakValueDictionary' "
-
"object needs an argument")
-
self, *args = args
-
if len(args) > 1:
-
raise TypeError('expected at most 1 arguments, got %d' % len(args))
-
def remove(wr, selfref=ref(self), _atomic_removal=_remove_dead_weakref):
-
self = selfref()
-
if self is not None:
-
if self._iterating:
-
self._pending_removals.append(wr.key)
-
else:
-
# Atomic removal is necessary since this function
-
# can be called asynchronously by the GC
-
_atomic_removal(d, wr.key)
-
self._remove = remove
-
# A list of keys to be removed
-
self._pending_removals = []
-
self._iterating = set()
-
self.data = d = {}
-
self.update(*args, **kw)
-
-
def _commit_removals(self):
-
l = self._pending_removals
-
d = self.data
-
# We shouldn't encounter any KeyError, because this method should
-
# always be called *before* mutating the dict.
-
while l:
-
key = l.pop()
-
_remove_dead_weakref(d, key)
-
-
def __getitem__(self, key):
-
if self._pending_removals:
-
self._commit_removals()
-
o = self.data[key]()
-
if o is None:
-
raise KeyError(key)
-
else:
-
return o
-
-
def __delitem__(self, key):
-
if self._pending_removals:
-
self._commit_removals()
-
del self.data[key]
-
-
def __len__(self):
-
if self._pending_removals:
-
self._commit_removals()
-
return len(self.data)
-
-
def __contains__(self, key):
-
if self._pending_removals:
-
self._commit_removals()
-
try:
-
o = self.data[key]()
-
except KeyError:
-
return False
-
return o is not None
-
-
def __repr__(self):
-
return "<%s at %#x>" % (self.__class__.__name__, id(self))
-
-
def __setitem__(self, key, value):
-
if self._pending_removals:
-
self._commit_removals()
-
self.data[key] = KeyedRef(value, self._remove, key)
-
-
def copy(self):
-
if self._pending_removals:
-
self._commit_removals()
-
new = WeakValueDictionary()
-
for key, wr in self.data.items():
-
o = wr()
-
if o is not None:
-
new[key] = o
-
return new
-
-
__copy__ = copy
-
-
def __deepcopy__(self, memo):
-
from copy import deepcopy
-
if self._pending_removals:
-
self._commit_removals()
-
new = self.__class__()
-
for key, wr in self.data.items():
-
o = wr()
-
if o is not None:
-
new[deepcopy(key, memo)] = o
-
return new
-
-
def get(self, key, default=None):
-
if self._pending_removals:
-
self._commit_removals()
-
try:
-
wr = self.data[key]
-
except KeyError:
-
return default
-
else:
-
o = wr()
-
if o is None:
-
# This should only happen
-
return default
-
else:
-
return o
-
-
def items(self):
-
if self._pending_removals:
-
self._commit_removals()
-
with _IterationGuard(self):
-
for k, wr in self.data.items():
-
v = wr()
-
if v is not None:
-
yield k, v
-
-
def keys(self):
-
if self._pending_removals:
-
self._commit_removals()
-
with _IterationGuard(self):
-
for k, wr in self.data.items():
-
if wr() is not None:
-
yield k
-
-
__iter__ = keys
-
-
def itervaluerefs(self):
-
"""Return an iterator that yields the weak references to the values.
-
-
The references are not guaranteed to be 'live' at the time
-
they are used, so the result of calling the references needs
-
to be checked before being used. This can be used to avoid
-
creating references that will cause the garbage collector to
-
keep the values around longer than needed.
-
-
"""
-
if self._pending_removals:
-
self._commit_removals()
-
with _IterationGuard(self):
-
yield from self.data.values()
-
-
def values(self):
-
if self._pending_removals:
-
self._commit_removals()
-
with _IterationGuard(self):
-
for wr in self.data.values():
-
obj = wr()
-
if obj is not None:
-
yield obj
-
-
def popitem(self):
-
if self._pending_removals:
-
self._commit_removals()
-
while True:
-
key, wr = self.data.popitem()
-
o = wr()
-
if o is not None:
-
return key, o
-
-
def pop(self, key, *args):
-
if self._pending_removals:
-
self._commit_removals()
-
try:
-
o = self.data.pop(key)()
-
except KeyError:
-
o = None
-
if o is None:
-
if args:
-
return args[0]
-
else:
-
raise KeyError(key)
-
else:
-
return o
-
-
def setdefault(self, key, default=None):
-
try:
-
o = self.data[key]()
-
except KeyError:
-
o = None
-
if o is None:
-
if self._pending_removals:
-
self._commit_removals()
-
self.data[key] = KeyedRef(default, self._remove, key)
-
return default
-
else:
-
return o
-
-
def update(*args, **kwargs):
-
if not args:
-
raise TypeError("descriptor 'update' of 'WeakValueDictionary' "
-
"object needs an argument")
-
self, *args = args
-
if len(args) > 1:
-
raise TypeError('expected at most 1 arguments, got %d' % len(args))
-
dict = args[0] if args else None
-
if self._pending_removals:
-
self._commit_removals()
-
d = self.data
-
if dict is not None:
-
if not hasattr(dict, "items"):
-
dict = type({})(dict)
-
for key, o in dict.items():
-
d[key] = KeyedRef(o, self._remove, key)
-
if len(kwargs):
-
self.update(kwargs)
-
-
def valuerefs(self):
-
"""Return a list of weak references to the values.
-
-
The references are not guaranteed to be 'live' at the time
-
they are used, so the result of calling the references needs
-
to be checked before being used. This can be used to avoid
-
creating references that will cause the garbage collector to
-
keep the values around longer than needed.
-
-
"""
-
if self._pending_removals:
-
self._commit_removals()
-
return list(self.data.values())
文章来源: yunyaniu.blog.csdn.net,作者:一个处女座的程序猿,版权归原作者所有,如需转载,请联系作者。
原文链接:yunyaniu.blog.csdn.net/article/details/84947123
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)