Django で python manage.py runserver を実行すると、次のエラーが発生する場合があります:
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
原因
このエラーは、Apple による OS X El Capitan (10.11) のシステム整合性保護の実装が原因で発生します。これにより、/usr などの保護された場所にあるプログラムが相対参照を使用して共有ライブラリにアクセスできなくなります。
この場合、共有ライブラリ _mysql.so には libmysqlclient.18.dylib への相対参照が含まれます。
解決策
この問題を解決するには、_mysql.so で libmysqlclient.18.dylib への絶対参照を使用するように強制する必要があります。これは、install_name_tool ユーティリティを使用して実現できます。
問題を解決する手順
sudo install_name_tool -change libmysqlclient.18.dylib \ /usr/local/mysql/lib/libmysqlclient.18.dylib \ /Library/Python/2.7/site-packages/_mysql.so
このコマンドは、libmysqlclient への絶対パスを使用するように _mysql.so 内の共有ライブラリ参照を更新します。 18.dylib.
このコマンドを実行すると、MySQL 構成エラーが発生せずに python manage.py runserver を正常に実行できるようになります。
以上がmacOS 上の Django で「ImproperlyConfigured: MySQLdb モジュールのロード中にエラーが発生しました」を修正する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。