如何解决Mac上Python mysqlclient安装错误

问题描述 投票:0回答:5

我正在尝试在带有 M1 芯片的 MacBook 上安装 MySQL 的 Python 接口(mysqlclient 2.1.0),以便与 Django 项目(将在 MS Code 中开发)一起使用。当我尝试为 python 安装 mysqlclient 时,出现错误并且无法解决它。我见过其他人也有类似的问题,但从下面得到的错误文本来看,我的问题并不相同

请帮忙

我的系统详细信息:MAC (M1)、OS Monterey 12.3、终端 zsh

  1. 下载并安装新的 python 3.10.3(但也尝试过 3.9.11)
  2. 创建并激活 python venv
Last login: Fri Mar 18 09:16:39 on ttys000
/Users/luklys/.zshrc:18: command not found: Password:
luklys@Luklys-MacBook-Air ~ % cd Documents/Code\ Projects/hello_django 
luklys@Luklys-MacBook-Air hello_django % python3 -m venv .myvenv
luklys@Luklys-MacBook-Air hello_django % source .myvenv/bin/activate
(.myvenv) luklys@Luklys-MacBook-Air hello_django %
  1. 尝试使用 MAC 指令安装 python MySQL 客户端 https://pypi.org/project/mysqlclient/
(.myvenv) luklys@Luklys-MacBook-Air hello_django % brew install mysql-client
Warning: mysql-client 8.0.28 is already installed and up-to-date.
To reinstall 8.0.28, run:
  brew reinstall mysql-client
(.myvenv) luklys@Luklys-MacBook-Air hello_django %

(.myvenv) luklys@Luklys-MacBook-Air hello_django % echo 'export PATH="/usr/local/opt/mysql-client/bin:$PATH"' >> ~/.zshrc       
(.myvenv) luklys@Luklys-MacBook-Air hello_django % export PATH="/usr/local/opt/mysql-client/bin:$PATH"

  1. 错误信息
(.myvenv) luklys@Luklys-MacBook-Air hello_django % pip install mysqlclient
Collecting mysqlclient
  Using cached mysqlclient-2.1.0.tar.gz (87 kB)
  Preparing metadata (setup.py) ... error
  error: subprocess-exited-with-error
  
  × python setup.py egg_info did not run successfully.
  │ exit code: 1
  ╰─> [16 lines of output]
      /bin/sh: mysql_config: command not found
      /bin/sh: mariadb_config: command not found
      /bin/sh: mysql_config: command not found
      Traceback (most recent call last):
        File "<string>", line 2, in <module>
        File "<pip-setuptools-caller>", line 34, in <module>
        File "/private/var/folders/pw/87hvnxc51gdcwf3ck25n95tw0000gn/T/pip-install-y_1qn9ke/mysqlclient_48574969a7ff4372b5ff326147c56ec6/setup.py", line 15, in <module>
          metadata, options = get_config()
        File "/private/var/folders/pw/87hvnxc51gdcwf3ck25n95tw0000gn/T/pip-install-y_1qn9ke/mysqlclient_48574969a7ff4372b5ff326147c56ec6/setup_posix.py", line 70, in get_config
          libs = mysql_config("libs")
        File "/private/var/folders/pw/87hvnxc51gdcwf3ck25n95tw0000gn/T/pip-install-y_1qn9ke/mysqlclient_48574969a7ff4372b5ff326147c56ec6/setup_posix.py", line 31, in mysql_config
          raise OSError("{} not found".format(_mysql_config_path))
      OSError: mysql_config not found
      mysql_config --version
      mariadb_config --version
      mysql_config --libs
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.

mysql python-3.x macos mysql-python
5个回答
3
投票

您必须先在本地笔记本电脑/服务器上安装 mysql 才能安装 mysqlclient。

您可以从https://dev.mysql.com/doc/refman/8.0/en/macos-installation-pkg.html

下载最新版本的MySQL

然后添加路径

export PATH=${PATH}:/usr/local/mysql/bin/
到 .zshrc 和 .zsh_profile

添加后只需运行

source .zshrc
source .zsh_profile

现在尝试做

mysql -u root -p
,如果有效的话会提示输入密码或直接带你到mysql。

现在你可以在python中安装mysqlclient了。


3
投票

对于 MariaDB,我在临时安装后解决了问题

mariadb-connector-c

brew install mariadb-connector-c
sudo ln -s /usr/local/opt/mariadb-connector-c/bin/mariadb_config /usr/local/bin/mysql_config

source ~/path-to-you-prj-enveroment/bin/activate
pip install mysqlclient
deactivate

sudo rm /usr/local/bin/mysql_config
brew unlink mariadb-connector-c

我相信使用 MySQL 可以以类似的方式解决问题:

brew install mysql-client
sudo ln -s /opt/homebrew/opt/mysql-client/bin/mysql_config /usr/local/bin/mysql_config

source ~/path-to-you-prj-enveroment/bin/activate
pip install mysqlclient
deactivate

rm /usr/local/bin/mysql_config
brew unlink mysql-client

1
投票

MySQL 似乎没有正确安装或 MySQL 不在路径中。当然,请在您的终端上尝试一下:

mysql -u root -p
。在你的情况下,它很可能会给出这个错误:
zsh command not found
。因此,尝试将 MySQL 添加到您的路径中。您可以在此处查看如何将 MySQL 添加到 Mac OS 中的路径: https://devdotcode.com/how-to-add-mysql-to-the-path-in-mac-os/。如果您的 MyQSL 安装正确,它应该可以工作。如果不是这种情况,请尝试正确重新安装 MySQL。


0
投票

我使用了 python3 -m pip install mysql-client ,这似乎解决了我的问题。我怀疑 python2 的意外倾销会让很多人头疼。


0
投票

对于我在 13.4.1 (c) (22F770820d) 上运行的 Macbook pro 16 2020 型号,以下步骤的 python 版本 3.11 解决了该问题。

brew update
brew unlink mariadb-connector-c
brew install mariadb
brew link --overwrite mariadb
pip install mysqlclient
© www.soinside.com 2019 - 2024. All rights reserved.