Bibliothèque non chargée : libmysqlclient.18.dylib en raison d'un chemin relatif non sécurisé
Énoncé du problème :
Lors de l'exécution de la commande "python manage.py runserver" de Django, une erreur se produit en raison d'une utilisation non sécurisée d'un chemin relatif dans "_mysql.so" lors du chargement du module MySQLdb. L'erreur se lit :
ImproperlyConfigured: Error loading MySQLdb module: dlopen(/Library/Python/2.7/site-packages/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib Referenced from: /Library/Python/2.7/site-packages/_mysql.so Reason: unsafe use of relative rpath libmysqlclient.18.dylib in /Library/Python/2.7/site-packages/_mysql.so with restricted binary
Résolution :
Cette erreur se produit car macOS El Capitan introduit la protection de l'intégrité du système, qui empêche les programmes d'accéder aux bibliothèques partagées à l'aide de références relatives. "_mysql.so" a une référence relative à "libmysqlclient.18.dylib", mais cela est désormais interdit.
Pour résoudre ce problème, une référence absolue doit être forcée pour "_mysql.so" à l'aide de l'outil "install_name_tool " utilitaire. Voici comment procéder :
sudo install_name_tool -change libmysqlclient.18.dylib \ /usr/local/mysql/lib/libmysqlclient.18.dylib \ /Library/Python/2.7/site-packages/_mysql.so
Cette commande modifie "_mysql.so" pour utiliser le chemin absolu vers "libmysqlclient.18.dylib", résolvant ainsi le problème de chemin relatif non sécurisé.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!