Maison > base de données > tutoriel mysql > Pourquoi est-ce que je reçois une erreur « Utilisation dangereuse du chemin relatif » avec MySQLdb sur El Capitan ?

Pourquoi est-ce que je reçois une erreur « Utilisation dangereuse du chemin relatif » avec MySQLdb sur El Capitan ?

Mary-Kate Olsen
Libérer: 2024-10-24 18:56:30
original
513 Les gens l'ont consulté

Why am I getting an

Un utilisateur d'El Capitan rencontre une erreur "utilisation dangereuse du chemin relatif" avec MySQLdb

Un utilisateur de Django a rencontré une erreur mystérieuse lors de la tentative d'exécution du serveur d'exécution python manage.py commande, recevant le message suivant :

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
Copier après la connexion

L'utilisateur a installé MySQL-python via Pip et a suivi une étape suggérée, mais le problème persiste. De plus, ils utilisent le système d'exploitation El Capitan Beta 3.

Le coupable : la protection de l'intégrité du système

Dans OS X El Capitan (10.11), Apple a introduit la protection de l'intégrité du système (SIP), qui empêche les programmes situés dans des emplacements protégés comme /usr d'accéder aux bibliothèques partagées à l'aide de références relatives. Dans ce cas, la bibliothèque partagée _mysql.so inclut une référence relative à la bibliothèque partagée libmysqlclient.18.dylib.

Résolution : Forcer une référence absolue

Lors d'une future mise à jour de _mysql.so peut résoudre ce problème, une solution temporaire consiste à forcer la bibliothèque à utiliser une référence absolue à l'aide de l'utilitaire install_name_tool.

En supposant que libmysqlclient.18.dylib se trouve dans /usr/local/mysql/lib/, exécutez ce qui suit commande :

sudo install_name_tool -change libmysqlclient.18.dylib \
  /usr/local/mysql/lib/libmysqlclient.18.dylib \
  /Library/Python/2.7/site-packages/_mysql.so
Copier après la connexion

Cette commande modifiera _mysql.so pour utiliser le chemin absolu vers la bibliothèque partagée libmysqlclient.18.dylib, résolvant ainsi l'erreur « utilisation dangereuse du chemin relatif ».

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal