【操作环境】

操作系统:MacOS X 10.13.1

mysql运行环境:Docker

Docker版本:17.09-ce


在开发Django时,刚开始使用的sqlite进行开发,想部署到生产环境需要连接到mysql上再跑一边测试。

为了不破坏整机的文件环境,我使用了Docker运行了Mysql。并没有通过源码的方式或brew命令来安装mysql。

在刚运行Django 的 migrate命令的时,便提示我不存在连接mysql的库,叫我安装mysqlclient

顺带一提,mysqlclient 是Python3中的MySQLdb, 它实现了与MySQLdb相兼容的接口,可以完美的替代MySQLdb,并且不用对代码做任何修改。

此时,我的电脑上没有任何关于mysql的文件(除了Docker镜像外)

运行 pip install mysqlclient 出现了下面的问题

Collecting mysqlclient
Using cached mysqlclient-1.3.12.tar.gz
Complete output from command python setup.py egg_info:
/bin/sh: mysql_config: command not found
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/private/var/folders/w2/xwm2lzmn55sfs0_s8gpxv5g00000gn/T/pip-build-y1_wya1q/mysqlclient/setup.py", line 17, in <module>
metadata, options = get_config()
File "/private/var/folders/w2/xwm2lzmn55sfs0_s8gpxv5g00000gn/T/pip-build-y1_wya1q/mysqlclient/setup_posix.py", line 44, in get_config
libs = mysql_config("libs_r")
File "/private/var/folders/w2/xwm2lzmn55sfs0_s8gpxv5g00000gn/T/pip-build-y1_wya1q/mysqlclient/setup_posix.py", line 26, in mysql_config
raise EnvironmentError("%s not found" % (mysql_config.path,))
OSError: mysql_config not found

大意便是说,我的系统中缺少了mysql_config文件。

于是我是用brew 安装了mysql-connector-c ,安装再次运行安装mysqlclient的命令,相应的错误没有了,但是却出现了下面的错误

Collecting mysqlclient
Using cached mysqlclient-1.3.12.tar.gz
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/private/var/folders/w2/xwm2lzmn55sfs0_s8gpxv5g00000gn/T/pip-build-59wqoy85/mysqlclient/setup.py", line 17, in <module>
metadata, options = get_config()
File "/private/var/folders/w2/xwm2lzmn55sfs0_s8gpxv5g00000gn/T/pip-build-59wqoy85/mysqlclient/setup_posix.py", line 54, in get_config
libraries = [dequote(i[2:]) for i in libs if i.startswith('-l')]
File "/private/var/folders/w2/xwm2lzmn55sfs0_s8gpxv5g00000gn/T/pip-build-59wqoy85/mysqlclient/setup_posix.py", line 54, in <listcomp>
libraries = [dequote(i[2:]) for i in libs if i.startswith('-l')]
File "/private/var/folders/w2/xwm2lzmn55sfs0_s8gpxv5g00000gn/T/pip-build-59wqoy85/mysqlclient/setup_posix.py", line 12, in dequote
if s[0] in "\"'" and s[0] == s[-1]:
IndexError: string index out of range

这个问题果然不是我一个人遇到的。在mysqlclient的issue上我找到了相应的解决办法

Issue #169

即修改mysql_config中的下列内容

# Create options
libs="-L$pkglibdir"
libs="$libs -l "

修改为

# Create options
libs="-L$pkglibdir"
libs="$libs -lmysqlclient -lssl -lcrypto"

修改完后就能够安装mysqlclient了呢。


修改mysql_config文件可能会遇到的问题:

mysql_config文件不可写。

在我的机器上,文件/usr/local/bin/mysql_config 为符号文件,通过ls命令,找到原来的文件,修改为可写文件,进行修改后,为防止被不小修改,再设为只读文件就好了。

MacOS 下安装mysqlclient 的问题及解决办法的更多相关文章

  1. php5.4下安装ECshop出现错误的解决办法

    转:http://www.programmernote.com/?p=65 1.安装是会提示 Warning: date_default_timezone_get(): It is not safe ...

  2. <linux报错解决>在Fedora21下安装vmware报错的解决办法

    关于VMWARE WORKSTATION在Fedora21下的安装问题 (1)在Fedora21下安装vmware如果在终端下启动,提示你找不到内核头文件Kernel Headers的话使用命令: s ...

  3. [Android自动化] 在 pip-9.0.1 版本情况下安装 uiautomator2 报错的解决办法

    1.在命令窗口中使用命令: pip install uiautomator2 时报 pip 版本过低,需要先升级 pip 版本,理论上会按照提示进行升级 pip 操作,但执行升级命令时到最后却还是报错 ...

  4. win7 64下安装mysql-python报错的解决办法

    最近要使用django进行项目开发,需要使用mysql-python模块. 在本地搭建环境安装的时候却出现报错,Unable to find vcvarsall.bat  在网上找了很多资料,发现是w ...

  5. Linux下安装Android的adb驱动-解决不能识别的问题

    Linux下安装Android的adb驱动-解决不能识别的问题 20141011更新:      老方法对我当时使用的一款设备一直都没有出现问题,最后遇到小米手机还有Android4.4版本的系统都会 ...

  6. macOS下安装openCV+Xcode配置

    macOS下安装openCV+Xcode配置打开终端 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Hom ...

  7. MySQL 5.7 Command Line Client输入密码后闪退和windows下mysql忘记root密码的解决办法

    MySQL 5.7 Command Line Client输入密码后闪退的问题: 问题分析: 1.查看mysql command line client默认执行的一些参数.方法:开始->所有程序 ...

  8. 360或者金山毒霸可能会导致HP网络打印机驱动安装失败“数据无效”的解决办法

    360或者金山毒霸可能会导致HP网络打印机驱动安装失败“数据无效”的解决办法     同事办公室的打印机是网线接口的那种网络打印机,不是直接连到电脑的那种,他电脑安装了360和金山毒霸,WIN10下安 ...

  9. 树莓派(Raspberry Pi 3)安装centos7后yum无法使用解决办法

    树莓派(Raspberry Pi 3)安装centos7后yum无法使用解决办法 人穷,闲鱼淘了个二手的树莓派3 英国版,无奈咱也不会用,很无奈~ 安装教程百度到的差不多都可以,找个格式正常的一步一步 ...

随机推荐

  1. python之testcenter操作

    一.设置python环境 1. 从以下路径中将StcPython.py文件拷贝出来 Linux: /Installdir/Spirent_TestCenter_4.xx/Spirent_TestCen ...

  2. HDU2089 暴力打表

    62的判断就是倒过来没有26 hdu2089 #include<cstdio> #include<cstdlib> #include<iostream> #incl ...

  3. RobotFramework自动化测试框架-移动手机自动化测试Click Element At Coordinates关键字的使用

    Click Element At Coordinates关键字通过一个具体的坐标点,来模拟点击一个Element,该关键字接收两个参数[ coordinate_X | coordinate_Y ]. ...

  4. javascript-OOP基础详解

      前  言 S     N 今天给大家详解一下面向对象编程(简称OOP)基础,OOP 语言使我们有能力定义自己的对象和变量类型 .对象拥有属性和方法 . 所以今天就给大家详解对象和类 . 1-1简介 ...

  5. [ZJOI2005]九数码游戏

    [ZJOI2005]九数码游戏 题目描述 输入输出格式 输入格式: 输入文件中包含三行三列九个数,同行的相邻两数用空格隔开,表示初始状态每个方格上的数字.初始状态不会是目标状态. 输出格式: 如果目标 ...

  6. 【特效】给元素循环添加class

    经常会遇到给元素循环添加class的效果,例如下面这个图 每个模块的背景色和图标都不相同,但是呢,模块的数量又不确定,说不定有几十个,那我不能设计几十个图标吧,所以,可以做成每9个一循环,也就是第10 ...

  7. Ajax笔记 XHR XMLHttpRequest

    XMLHttpRequest    xhr    XmlHttpRequest var request ;    if(Windows.XMLHttpRequest)    {    request ...

  8. day2_python的数据类型,sys,os模块,编码解码,列表,字典

    今天主要了解了python的数据类型,sys,os模块,编码解码,列表,字典 1.数据类型:int(python3没有长整型)文本总是Unicode,str表示二进制用byte类表示布尔型:True( ...

  9. 转 node.js里面的http模块深入理解

    问题1:HTTP服务继承了TCP服务模型,是从connection为单位的服务到以request为单位的服务的封装,那么request事件何时触发? 注意:在开启keepalive后,一个TCP会话可 ...

  10. Codeforces Round #439 (Div. 2) C DP(图论)

    C. The Intriguing Obsession time limit per test 1 second memory limit per test 256 megabytes input s ...