Maison  >  Article  >  base de données  >  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
Mary-Kate Olsenoriginal
2024-10-24 18:56:30395parcourir

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

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

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:
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