La bibliothèque d'interface client "MySQL" ne se charge pas sur MacOS Monterey. Les lignes de traceback correspondantes sont les suivantes : (Le système est Django, les dernières versions de tout).
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)
Il me semble que Python essaie d'utiliser @rpath
pour trouver la bibliothèque, et man dyld
m'explique de quoi il s'agit. Jusqu'à présent, tout va bien ...
J'ai précisé export DYLD_LIBRARY_PATH=/usr/local/mysql-8.0.31-macos12-X86_64/lib
qui est l'emplacement correct, mais la bibliothèque n'est toujours pas trouvée. (Remarquez, à la fin de la ligne 2, qu'il semble utiliser @rpath
explicitement en tant que partie du chemin de la bibliothèque recherchée). J'ai lu d'autres articles de forum sans rapport avec le sujet, qui fournissent les informations suivantes DYLD_LIBRARY_PATH
comme solution, bien que dans l'environnement Linux.
Je ne sais pas comment faire voir ce que @rpath
contient.
Je sais que "ça marchait avant", mais cela fait longtemps que je n'ai pas eu affaire à cette application et je ne me souviens franchement pas de la version de MacOS que j'utilisais à l'époque.
Est-il possible que la "protection de l'intégrité du système" ait quelque chose à voir avec cela ? J'ai lu que dans certains cas, cette variable d'environnement est bloquée, mais je ne vois pas très bien quand elle s'applique ou non.
L'interpréteur Python3 en question est situé dans un "environnement virtuel", ce qui signifie qu'il fonctionne en fait à partir d'un répertoire local de l'utilisateur et qu'il n'est donc pas couvert par le SIP. Mais les bibliothèques elles-mêmes résident dans /usr
, qui est. J'ai reconstruit cet environnement virtuel.