如何解决“没有名为mysqldb的模块”?

问题描述

我是python的新手。我正在按照教程系列tk使用flask创建网站。但是当我填写联系表格,然后单击“发送”时,我会收到此错误

ModuleNotFoundError: No module named 'MysqLdb'
Traceback (most recent call last)
File "C:\Users\acer\AppData\Local\Programs\Python\python38-32\Lib\site-packages\sqlalchemy\util\_collections.py",line 1020,in __call__
return self.registry[key]
During handling of the above exception,another exception occurred:
File "C:\Users\acer\AppData\Local\Programs\Python\python38-32\Lib\site-packages\flask\app.py",line 2464,in __call__
return self.wsgi_app(environ,start_response)
File "C:\Users\acer\AppData\Local\Programs\Python\python38-32\Lib\site-packages\flask\app.py",line 2450,in wsgi_app
response = self.handle_exception(e)
File "C:\Users\acer\AppData\Local\Programs\Python\python38-32\Lib\site-packages\flask\app.py",line 1867,in handle_exception
reraise(exc_type,exc_value,tb)
File "C:\Users\acer\AppData\Local\Programs\Python\python38-32\Lib\site-packages\flask\_compat.py",line 39,in reraise
raise value
File "C:\Users\acer\AppData\Local\Programs\Python\python38-32\Lib\site-packages\flask\app.py",line 2447,in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\acer\AppData\Local\Programs\Python\python38-32\Lib\site-packages\flask\app.py",line 1952,in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Users\acer\AppData\Local\Programs\Python\python38-32\Lib\site-packages\flask\app.py",line 1821,in handle_user_exception
reraise(exc_type,line 1950,in full_dispatch_request
rv = self.dispatch_request()
File "C:\Users\acer\AppData\Local\Programs\Python\python38-32\Lib\site-packages\flask\app.py",line 1936,in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "C:\Users\acer\PycharmProjects\webdev.flask\first.1.py",line 46,in contact
db.session.add(entry)
File "C:\Users\acer\AppData\Local\Programs\Python\python38-32\Lib\site-packages\sqlalchemy\orm\scoping.py",line 163,in do
return getattr(self.registry(),name)(*args,**kwargs)
File "C:\Users\acer\AppData\Local\Programs\Python\python38-32\Lib\site-packages\sqlalchemy\util\_collections.py",line 1022,in __call__
return self.registry.setdefault(key,self.createfunc())
File "C:\Users\acer\AppData\Local\Programs\Python\python38-32\Lib\site-packages\sqlalchemy\orm\session.py",line 3286,in __call__
return self.class_(**local_kw)
File "C:\Users\acer\AppData\Local\Programs\Python\python38-32\Lib\site-packages\flask_sqlalchemy\__init__.py",line 138,in __init__
bind = options.pop('bind',None) or db.engine
File "C:\Users\acer\AppData\Local\Programs\Python\python38-32\Lib\site-packages\flask_sqlalchemy\__init__.py",line 943,in engine
return self.get_engine()
File "C:\Users\acer\AppData\Local\Programs\Python\python38-32\Lib\site-packages\flask_sqlalchemy\__init__.py",line 962,in get_engine
return connector.get_engine()
File "C:\Users\acer\AppData\Local\Programs\Python\python38-32\Lib\site-packages\flask_sqlalchemy\__init__.py",line 556,in get_engine
self._engine = rv = self._sa.create_engine(sa_url,options)
File "C:\Users\acer\AppData\Local\Programs\Python\python38-32\Lib\site-packages\flask_sqlalchemy\__init__.py",line 972,in create_engine
return sqlalchemy.create_engine(sa_url,**engine_opts)
File "C:\Users\acer\AppData\Local\Programs\Python\python38-32\Lib\site-packages\sqlalchemy\engine\__init__.py",line 500,in create_engine
return strategy.create(*args,**kwargs)
File "C:\Users\acer\AppData\Local\Programs\Python\python38-32\Lib\site-packages\sqlalchemy\engine\strategies.py",line 87,in create
dbapi = dialect_cls.dbapi(**dbapi_args)
File "C:\Users\acer\AppData\Local\Programs\Python\python38-32\Lib\site-packages\sqlalchemy\dialects\MysqL\MysqLdb.py",line 118,in dbapi
return __import__("MysqLdb")
ModuleNotFoundError: No module named 'MysqLdb'

我尝试安装MysqLient,但它也给出“无法建立轮子”错误。 我正在使用python 3.8

如何解决此问题?

解决方法

  1. 如果使用pycharm,则文件->设置->解释器-> +(右)。在那里安装了wheel和mysql客户端(并非总是最新版本)
  2. 如果我手动假设您使用的是虚拟环境,则需要激活它,并且它已经具有“ pip install wheel”和mysqlclient