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


相关文章
ModuleNotFoundError: No module named ‘openai.error‘
这篇文章讨论了在使用OpenAI库时遇到的`ModuleNotFoundError: No module named ‘openai.error'`错误,并提供了两种解决方案:将OpenAI版本降级到0.28.0或修改代码以去掉对`openai.error`的引用并将异常处理放置到`openai`模块下。
ModuleNotFoundError: No module named ‘openai.error‘
ModuleNotFoundError: No module named ‘mmdet.version‘
ModuleNotFoundError: No module named ‘mmdet.version‘
1512 0
|
5月前
|
Linux PyTorch 算法框架/工具
[已解决]ModuleNotFoundError: No module named ‘einops‘
[已解决]ModuleNotFoundError: No module named ‘einops‘
|
11月前
Py3 ModuleNotFoundError: No module named ‘Crypto‘;ModuleNotFoundError: No module named Cryptodome‘
Py3 ModuleNotFoundError: No module named ‘Crypto‘;ModuleNotFoundError: No module named Cryptodome‘
85 0
|
11月前
ModuleNotFoundError: No module named ‘exceptions‘
ModuleNotFoundError: No module named ‘exceptions‘
ModuleNotFoundError: No module named ‘sentencepiece‘
ModuleNotFoundError: No module named ‘sentencepiece‘
222 0
ModuleNotFoundError: No module named ‘pydensecrf‘解决办法
ModuleNotFoundError: No module named ‘pydensecrf‘解决办法
296 0
ModuleNotFoundError: No module named 'torchstat'
ModuleNotFoundError: No module named 'torchstat'
425 0
ModuleNotFoundError: No module named 'torchstat'
|
Python
ModuleNotFoundError: No module named ‘pyexpat‘
ModuleNotFoundError: No module named ‘pyexpat‘
212 0
|
Python
ModuleNotFoundError: No module named ‘paramiko‘ 和ModuleNotFoundError: No module named ‘scp‘解决办法
ModuleNotFoundError: No module named ‘paramiko‘ 和ModuleNotFoundError: No module named ‘scp‘解决办法
634 0
ModuleNotFoundError: No module named ‘paramiko‘ 和ModuleNotFoundError: No module named ‘scp‘解决办法