在MAC_OS中安装MySQL-python运行库

新建环境配置

virtualenv --no-site-packages new_env

安装MySQL-python

pip install MySQL-python

引发错误

    Complete output from command python setup.py egg_info:
    sh: mysql_config: command not found
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/8d/2c8f84vj48gg980_srg1ph200000gp/T/pip-install-gNeVyX/MySQL-python/setup.py", line 17, in <module>
        metadata, options = get_config()
      File "setup_posix.py", line 43, in get_config
        libs = mysql_config("libs_r")
      File "setup_posix.py", line 25, in mysql_config
        raise EnvironmentError("%s not found" % (mysql_config.path,))
    EnvironmentError: mysql_config not found

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/8d/2c8f84vj48gg980_srg1ph200000gp/T/pip-install-gNeVyX/MySQL-python/

分析

STEP1: 确认问题

这里明显看到错误是因为没有mysql_config命令导致,这里运行指令查询一下mysql_config是否在系统中。

which mysql_config

系统返回

mysql_config not found

确实不存在该指令。


去mysql官网查询mysql_config,用于了解mysql_config命令工具的用处。

tip1: 编译MySQL客户端并将其连接到MySQL
tip2: 它是一个shell脚本

这里得到了mysql_config是一个用于编译MySQL客户端并将其连接到MySQL的SHELL脚本,这里基本可以解释为什么MySQL-python会需要mysql_config脚本,
简而言之MySQL-python是使用Python去实现的一个与MySQL构建连接并向python程序开发者提供调用API的客户端。

STEP2: 转化问题

因为没有办法直接安装mysql_config,因为MySQL官方并不提供下载能力。

安装mysql_config工具
安装带有mysql_config工具的工具
STEP3: 确认带有mysql_config工具的工具

brew中可以安装的工具中,有几个常用的都是带有mysql_config工具的。

工具名 安装方式
mysql-client brew install mysql-client
mysql brew install mysql

实施方案

这里选用的是mysql-client,并且也推荐选择使用mysql-client,mysql-client是专门用于构建和连接MySQL用的工具,相应的扩展和开发依赖比较全。

brew install mysql-client

成功后返回

==> Downloading https://homebrew.bintray.com/bottles/mysql-client-5.7.23.mojave.bottle.tar.gz
Already downloaded: /Users/zhiping.li/Library/Caches/Homebrew/downloads/4aac41a5c1a9775a2206e2e4a0b2f298aa3170c480d37306655a131d5882998f--mysql-client-5.7.23.mojave.bottle.tar.gz
==> Pouring mysql-client-5.7.23.mojave.bottle.tar.gz
==> Caveats
mysql-client is keg-only, which means it was not symlinked into /usr/local,
because conflicts with mysql.

If you need to have mysql-client first in your PATH run:
  echo 'export PATH="/usr/local/opt/mysql-client/bin:$PATH"' >> ~/.zshrc

For compilers to find mysql-client you may need to set:
  export LDFLAGS="-L/usr/local/opt/mysql-client/lib"
  export CPPFLAGS="-I/usr/local/opt/mysql-client/include"

For pkg-config to find mysql-client you may need to set:
  export PKG_CONFIG_PATH="/usr/local/opt/mysql-client/lib/pkgconfig"

==> Summary
?  /usr/local/Cellar/mysql-client/5.7.23: 232 files, 80.5MB==> Downloading https://homebrew.bintray.com/bottles/mysql-client-5.7.23.mojave.bottle.tar.gz
Already downloaded: /Users/zhiping.li/Library/Caches/Homebrew/downloads/4aac41a5c1a9775a2206e2e4a0b2f298aa3170c480d37306655a131d5882998f--mysql-client-5.7.23.mojave.bottle.tar.gz
==> Pouring mysql-client-5.7.23.mojave.bottle.tar.gz
==> Caveats
mysql-client is keg-only, which means it was not symlinked into /usr/local,
because conflicts with mysql.

If you need to have mysql-client first in your PATH run:
  echo 'export PATH="/usr/local/opt/mysql-client/bin:$PATH"' >> ~/.zshrc

For compilers to find mysql-client you may need to set:
  export LDFLAGS="-L/usr/local/opt/mysql-client/lib"
  export CPPFLAGS="-I/usr/local/opt/mysql-client/include"

For pkg-config to find mysql-client you may need to set:
  export PKG_CONFIG_PATH="/usr/local/opt/mysql-client/lib/pkgconfig"

==> Summary
?  /usr/local/Cellar/mysql-client/5.7.23: 232 files, 80.5MB

按照返回的指令分别配置环境变量和编译器依赖。

# 配置环境变量
export PATH="/usr/local/opt/mysql-client/bin:$PATH"

# 配置编译器依赖
export LDFLAGS="-L/usr/local/opt/mysql-client/lib"
export CPPFLAGS="-I/usr/local/opt/mysql-client/include"

运行完如上指令后,pip在安装MySQL-python并编译生成客户端的时候就能够找到对应mysql_config工具了。

pip install MySQL-python

一般就会成功安装了

Collecting MySQL-python
Installing collected packages: MySQL-python
Successfully installed MySQL-python-1.2.5

TIPS

有些时候,你可能会因为xcode等依赖库问题没办法对于程序进行编译,但是并和mysql_config没有关系了,这时候需要解决的是安装或者更新xcode依赖的问题,可以参考一些成熟的文章。

猜你喜欢

转载自blog.csdn.net/m0_37964621/article/details/86737030