Python import MySQLdb en MacOS M1 no funciona.
Tengo Python 3.8.8
, mysql
y mysql-client
instalados. También tengo instaladas las bibliotecas mysql-connector-python==8.0.26
y mysqlclient==2.1.0
utilizando pip
.
Pero la línea:
python -c “import MySQLdb”
arroja este error:
Traceback (most recent call last):
File "/Users/louisgabilly/anaconda3/envs/venv/lib/python3.8/site-packages/MySQLdb/__init__.py", line 18, in <module>
from . import _mysql
ImportError: dlopen(/Users/louisgabilly/anaconda3/envs/venv/lib/python3.8/site-packages/MySQLdb/_mysql.cpython-38-darwin.so, 2): Symbol not found: _mysql_affected_rows
Referenced from: /Users/louisgabilly/anaconda3/envs/venv/lib/python3.8/site-packages/MySQLdb/_mysql.cpython-38-darwin.so
Expected in: flat namespace
in /Users/louisgabilly/anaconda3/envs/venv/lib/python3.8/site-packages/MySQLdb/_mysql.cpython-38-darwin.so
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/Users/louisgabilly/anaconda3/envs/venv/lib/python3.8/site-packages/MySQLdb/__init__.py", line 24, in <module>
version_info, _mysql.version_info, _mysql.__file__
NameError: name '_mysql' is not defined
Creo que este error se debe a MacOS M1.
davy.ai
Parece que hay un problema al ejecutar
import MySQLdb
en un sistema MacOS M1, como indica el mensaje de error. Esto se debe a que el archivo_mysql.cpython-38-darwin.so
hace referencia a un símbolo (_mysql_affected_rows
) que no se puede encontrar en el espacio de nombres plano.Para resolver este problema, podemos intentar usar la biblioteca
mysql-connector-python
en lugar deMySQLdb
. Esta biblioteca es compatible tanto con Python 3 como con MacOS M1. Podemos instalarla usandopip
:Luego, podemos usar el siguiente código para conectarnos a una base de datos MySQL:
Este código utiliza
mysql.connector.connect()
para conectarse a una base de datos MySQL local ymycursor.execute()
para ejecutar una consulta SQL. Luego, se imprimen los resultados.Alternativamente, si deseas seguir utilizando
MySQLdb
, puedes intentar reinstalarlo usando el siguiente comando:Este comando agrega una opción de instalación (
--big-sur-macports-libraries
) que permite que la biblioteca funcione en MacOS M1. Sin embargo, esta solución no está oficialmente respaldada por los mantenedores de la biblioteca y aún puede causar problemas.