2021年4月8日星期四

How to fix ModuleNotFoundError: No module named '_mysql'?

Environment:

Ubuntu 18.04.5 LTS (GNU/Linux 4.15.0-45-generic x86_64)

Server version: Apache/2.4.29 (Ubuntu)

Python 3.7.5

Flask 1.1.2

Werkzeug 1.0.1

We deployed a flask application on our VPS ubuntu. When we test with a browser, I get an error 500. When I checked gunicorn.log : cat /var/log/gunicorn.log

[2021-04-08 18:37:21,413] ERROR in app: Exception on / [POST]  Traceback (most recent call last):    File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/util/_collections.py", line 1020, in __call__      return self.registry[key]  KeyError: 140258434049856    During handling of the above exception, another exception occurred:    Traceback (most recent call last):    File "/usr/local/lib/python3.7/dist-packages/flask/app.py", line 2447, in wsgi_app      response = self.full_dispatch_request()    File "/usr/local/lib/python3.7/dist-packages/flask/app.py", line 1952, in full_dispatch_request      rv = self.handle_user_exception(e)    File "/usr/local/lib/python3.7/dist-packages/flask/app.py", line 1821, in handle_user_exception      reraise(exc_type, exc_value, tb)    File "/usr/local/lib/python3.7/dist-packages/flask/_compat.py", line 39, in reraise      raise value    File "/usr/local/lib/python3.7/dist-packages/flask/app.py", line 1950, in full_dispatch_request      rv = self.dispatch_request()    File "/usr/local/lib/python3.7/dist-packages/flask/app.py", line 1936, in dispatch_request      return self.view_functions[rule.endpoint](**req.view_args)    File "/var/www/vhosts/domain.co/dashboard.domain.co/Domain_dashboard/dashboard/routes.py", line 282, in home      if form.validate_on_submit():    File "/usr/local/lib/python3.7/dist-packages/flask_wtf/form.py", line 100, in validate_on_submit      return self.is_submitted() and self.validate()    File "/usr/local/lib/python3.7/dist-packages/wtforms/form.py", line 318, in validate      return super(Form, self).validate(extra)    File "/usr/local/lib/python3.7/dist-packages/wtforms/form.py", line 150, in validate      if not field.validate(self, extra):    File "/usr/local/lib/python3.7/dist-packages/wtforms/fields/core.py", line 226, in validate      stop_validation = self._run_validation_chain(form, chain)    File "/usr/local/lib/python3.7/dist-packages/wtforms/fields/core.py", line 246, in _run_validation_chain      validator(form, self)    File "/var/www/vhosts/domain.co/dashboard.domain.co/Domain_dashboard/dashboard/forms.py", line 53, in validate_email      user = User.query.filter_by(user_email=email.data).first()    File "/usr/local/lib/python3.7/dist-packages/flask_sqlalchemy/__init__.py", line 514, in __get__      return type.query_class(mapper, session=self.sa.session())    File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/orm/scoping.py", line 78, in __call__      return self.registry()    File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/util/_collections.py", line 1022, in __call__      return self.registry.setdefault(key, self.createfunc())    File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/orm/session.py", line 3309, in __call__      return self.class_(**local_kw)    File "/usr/local/lib/python3.7/dist-packages/flask_sqlalchemy/__init__.py", line 138, in __init__      bind = options.pop('bind', None) or db.engine    File "/usr/local/lib/python3.7/dist-packages/flask_sqlalchemy/__init__.py", line 943, in engine      return self.get_engine()    File "/usr/local/lib/python3.7/dist-packages/flask_sqlalchemy/__init__.py", line 962, in get_engine      return connector.get_engine()    File "/usr/local/lib/python3.7/dist-packages/flask_sqlalchemy/__init__.py", line 556, in get_engine      self._engine = rv = self._sa.create_engine(sa_url, options)    File "/usr/local/lib/python3.7/dist-packages/flask_sqlalchemy/__init__.py", line 972, in create_engine      return sqlalchemy.create_engine(sa_url, **engine_opts)    File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/__init__.py", line 520, in create_engine      return strategy.create(*args, **kwargs)    File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/strategies.py", line 87, in create      dbapi = dialect_cls.dbapi(**dbapi_args)    File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/dialects/mysql/mysqldb.py", line 118, in dbapi      return __import__("MySQLdb")    File "/usr/lib/python3/dist-packages/MySQLdb/__init__.py", line 19, in <module>      import _mysql  ModuleNotFoundError: No module named '_mysql'  

So I searched on google and here. I saw so many similar questions. So I tried the recommendation. pip install this, pip install that, but I always come back to same issue : Internal Server Error 500 and ModuleNotFoundError: No module named '_mysql'

Does anyone have any idea about this issue?

MORE INFO:

pip freeze:

apparmor==2.12  asn1crypto==0.24.0  blinker==1.4  certifi==2018.1.18  chardet==3.0.4  cheroot==8.4.5  CherryPy==18.6.0  click==7.1.2  cloud-init==20.3  command-not-found==0.3  configobj==5.0.6  configparser==5.0.2  cryptography==2.1.4  db-mysql==0.1.2  distro-info===0.18ubuntu0.18.04.1  Flask==1.1.2  Flask-Login==0.5.0  Flask-SQLAlchemy==2.4.4  Flask-WTF==0.14.3  gunicorn==20.1.0  idna==2.6  iotop==0.6  isc==2.0  itsdangerous==1.1.0  jaraco.classes==3.1.0  jaraco.collections==3.0.0  jaraco.functools==3.0.1  jaraco.text==3.2.0  Jinja2==2.11.3  jsonpatch==1.16  jsonpointer==1.10  jsonschema==2.6.0  keyring==10.6.0  keyrings.alt==3.0  language-selector==0.1  LibAppArmor==2.12  MarkupSafe==1.1.1  more-itertools==8.5.0  mysql-connector==2.2.9  mysql-connector-python==8.0.23  mysql-connector-python-rf==2.2.2  mysqlclient==1.3.10  netifaces==0.10.4  oauthlib==2.0.6  ply==3.11  portend==2.6  protobuf==3.15.7  pycrypto==2.6.1  pygobject==3.26.1  PyJWT==1.5.3  PyMySQL==0.10.1  pyserial==3.4  python-apt==1.6.5+ubuntu0.3  pytz==2020.1  pyxdg==0.25  PyYAML==3.12  requests==2.18.4  SecretStorage==2.3.1  six==1.11.0  SQLAlchemy==1.3.23  ssh-import-id==5.7  tempora==4.0.0  ufw==0.36  unattended-upgrades==0.1  urllib3==1.22  Werkzeug==1.0.1  WTForms==2.3.3  zc.lockfile==2.0  

I added the environment variable export $PYTHONPATH=/usr/local/lib/python3.7/dist-packages/

I added in the . bashrc file.

I restarted apache2 and the issue is still there. It didn't fix anything?

https://stackoverflow.com/questions/67010342/how-to-fix-modulenotfounderror-no-module-named-mysql April 09, 2021 at 03:04AM

没有评论:

发表评论