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