Seorang pengguna Django telah mengalami ralat misteri apabila cuba menjalankan python manage.py runserver arahan, menerima mesej berikut:
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
Pengguna telah memasang MySQL-python melalui Pip dan mengikuti langkah yang dicadangkan, tetapi isu itu berterusan. Selain itu, mereka menggunakan sistem pengendalian El Capitan Beta 3.
Dalam OS X El Capitan (10.11), Apple memperkenalkan System Integrity Protection (SIP), yang mengehadkan program di lokasi yang dilindungi seperti /usr daripada mengakses perpustakaan kongsi menggunakan rujukan relatif. Dalam kes ini, perpustakaan kongsi _mysql.so termasuk rujukan relatif kepada perpustakaan kongsi libmysqlclient.18.dylib.
Sementara kemas kini masa hadapan _mysql.so boleh menyelesaikan isu ini, penyelesaian sementara melibatkan memaksa perpustakaan menggunakan rujukan mutlak menggunakan utiliti install_name_tool.
Dengan mengandaikan libmysqlclient.18.dylib terletak dalam /usr/local/mysql/lib/, laksanakan perkara berikut arahan:
sudo install_name_tool -change libmysqlclient.18.dylib \ /usr/local/mysql/lib/libmysqlclient.18.dylib \ /Library/Python/2.7/site-packages/_mysql.so
Arahan ini akan mengubah suai _mysql.so untuk menggunakan laluan mutlak ke pustaka kongsi libmysqlclient.18.dylib, menyelesaikan ralat "penggunaan tidak selamat laluan relatif".
Atas ialah kandungan terperinci Mengapa saya mendapat ralat \'penggunaan laluan relatif yang tidak selamat\' dengan MySQLdb pada El Capitan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!