成功解决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)