新建环境配置
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官方并不提供下载能力。
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依赖的问题,可以参考一些成熟的文章。