Python:MySQL Improperly Configured Reason: unsafe use of relative path

MacOS'un OS X El Capitan (10.11) versiyonuna geçtiyseniz geliştirme ortamı ile ilgili birçok şeyin çalışmadığını fark etmişsinizdir. Xcode Command Line Tools yüklemek sorunları büyük ölçüde düzeltiyor. Ama maalesef herşeyi değil.

Bu sürüm ile gelen System Integrity Protection uygulamaların /usr gibi protected dizinlerden başka bir paylaşımlı kütüphaneye (shared library) relative reference kullanan paylaşımlı kütüphanelerin çağırılmasını engelliyor.

Benim durumumda python MySQL modülünü çalıştıramıyordu ve aşağıdaki gibi bir hata veriyordu.

python manage.py runserver 8080
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

_mysql.so hatasının sebebi de paylaşımlı kütüphane olan libmysqlclient.18.dylib dosyasına relative reference bulunmaksı.

Bu durumu değiştirmek yada çalışır hale getirmek için install_name_tool ile absolute reference kullanır hale getirmek yeterli.

Aşağıdaki komut ile bunu yapmak mümkün:

sudo install_name_tool -change libmysqlclient.18.dylib \
  /usr/local/mysql/lib/libmysqlclient.18.dylib \
  /Library/Python/2.7/site-packages/_mysql.so