Python の MySQLdb を使う時に symbol not found in flat namespace '_mysql_affected_rows' が出た場合の対応

DjangoPython
2023-11-09 03:39 (2 years ago)
Flat Namespace Fix
この記事をテーマにした曲を再生

Apple silicon の Python で MySQL を操作しようとして

ImportError: dlopen(/.../site-packages/MySQLdb/_mysql.cpython-310-darwin.so, 0x0002): symbol not found in flat namespace '_mysql_affected_rows'

が出た。

Macos M1 mysqlclient Symbol not found: _mysql_affected_rows ERROR · Issue #496 · PyMySQL/mysqlclient

上記のコメントを参考にする。

私の環境では

% echo $MYSQLCLIENT_LDFLAGS
-L/opt/homebrew/opt/openssl/lib -L/opt/homebrew/opt/mysql/lib -L/opt/homebrew/opt/zlib/lib -L/opt/homebrew/lib

となっていたので、

% echo $MYSQLCLIENT_LDFLAGS
-L/opt/homebrew/opt/openssl/lib -L/opt/homebrew/opt/mysql/lib -L/opt/homebrew/opt/zlib/lib -L/opt/homebrew/lib -lmysqlclient -rpath /opt/homebrew/opt/mysql/lib

となるように修正した。

その後、

pip uninstall mysqlclient
pip cache purge
pip install mysqlclient

を行った。

python3

>>> import MySQLdb
>>>

でエラーが出なければOK

評価をお願いします
まだ評価がありません
著者は、アプリケーション開発会社 Cyberneura を運営しています。
開発相談をお待ちしています。

アーカイブ