簡體   English   中英

Python 在 MacOS M1 上導入 MySQLdb 不起作用

[英]Python import MySQLdb on MacOS M1 doesn't work

我安裝了 Python 3.8.8mysqlmysql-client 我還使用pip安裝了mysql-connector-python==8.0.26mysqlclient==2.1.0庫。

但是線

python -c“導入MySQLdb”

返回此錯誤:

> Traceback (most recent call last):
  File "/Users/louisgabilly/anaconda3/envs/venv/lib/python3.8/site-packages/MySQLdb/__init__.py", line 18, in <module>
    from . import _mysql
ImportError: dlopen(/Users/louisgabilly/anaconda3/envs/venv/lib/python3.8/site-packages/MySQLdb/_mysql.cpython-38-darwin.so, 2): Symbol not found: _mysql_affected_rows
  Referenced from: /Users/louisgabilly/anaconda3/envs/venv/lib/python3.8/site-packages/MySQLdb/_mysql.cpython-38-darwin.so
  Expected in: flat namespace
 in /Users/louisgabilly/anaconda3/envs/venv/lib/python3.8/site-packages/MySQLdb/_mysql.cpython-38-darwin.so
>
>During handling of the above exception, another exception occurred:
>
>Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/Users/louisgabilly/anaconda3/envs/venv/lib/python3.8/site-packages/MySQLdb/__init__.py", line 24, in <module>
    version_info, _mysql.version_info, _mysql.__file__
NameError: name '_mysql' is not defined

我相信這個錯誤是由於 MacOS M1 造成的。

https://github.com/PyMySQL/mysqlclient/issues/496中有一個很好的討論,這個問題的出現是 Python 的架構(ARM64 或 Intel)與 mysqlclient 的架構不一致。 因此,請檢查您使用的是哪個 python(因為您可能會使用一些您不打算使用的 python)以及它們之間的一致性

即使您已經安裝了mysqlclient ,您也需要安裝 Oracle 本機客戶端庫才能使其工作。 您可以使用 brew 安裝客戶端。

brew install mysql-client

正如這個答案所說 MySQLdb 不支持 Python 3 你應該導入

import mysql.connector 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM