La biblioteca de la interfaz cliente "MySQL" no se carga en MacOS Monterey. Las líneas de rastreo relevantes son las siguientes: (El sistema es Django, últimas versiones de todo).
ImportError: dlopen(/Users/mike/.virtualenvs/djangoprod/lib/python3.11/site-packages/MySQLdb/_mysql.cpython-311-darwin.so, 0x0002): Library not loaded: '@rpath/libmysqlclient.21.dylib'
Referenced from: '/Users/mike/.virtualenvs/djangoprod/lib/python3.11/site-packages/MySQLdb/_mysql.cpython-311-darwin.so'
Reason: tried: '/usr/lib/libmysqlclient.21.dylib' (no such file)
Me parece que Python está intentando utilizar @rpath
para encontrar la biblioteca, y man dyld
me explica qué es eso. Hasta ahora, todo bien...
He especificado export DYLD_LIBRARY_PATH=/usr/local/mysql-8.0.31-macos12-X86_64/lib
que es la ubicación correcta, pero la biblioteca sigue sin encontrarse. (Observa en la cola de la línea #2 que parece estar usando @rpath
explícitamente como parte de la ruta de la biblioteca que se busca). He leído otros mensajes no relacionados en el foro que proporcionan DYLD_LIBRARY_PATH
como solución, aunque en el entorno Linux.
No sé cómo véase qué @rpath
contiene.
Sé que "esto solía funcionar", pero hace tiempo que no tengo nada que ver con esta aplicación y, francamente, no recuerdo qué versión de MacOS utilizaba entonces.
¿Es posible que la "Protección de la integridad del sistema" tenga algo que ver con esto? He leído que en ciertos casos bloquea esta variable de entorno, pero no me queda del todo claro cuándo sí y cuándo no.
El intérprete de Python3 en cuestión se encuentra en un "entorno virtual", lo que significa que en realidad se está ejecutando desde un directorio local de usuario que, por lo tanto, no estaría cubierto por SIP. Pero las bibliotecas sí residen en /usr
que es. Reconstruí ese entorno virtual.