如何在Mac OS X上安装MySQLdb(Python数据访问库到MySQL)?

我是一个Python的新手,但我只是花了一天的时间来研究如何让MySQLdb正常工作,根据谷歌的宇宙包括了许多PITA是什么,以及过多的指南,似乎是过时。 鉴于这个网站是为了解决这些问题,我知道我将来需要一个解决scheme的参考,我会问这个问题,提供我的答案,看看还有什么可以漂浮到表面。

所以问题是如何让MySQLdb在Mac OS X上工作?

这是我在这个问题上散漫经历的故事。 如果你对这个问题有更好的经验,我会很乐意看到它的编辑或推广。

注意:下一段中的注释适用于Snow Leopard,但不适用于似乎需要64位MySQL的Lion

首先,MySQLdb的作者(仍然是?)在这里说,最有害的问题之一是OS X安装了一个32位版本的Python,但大多数普通的joes(包括我自己)可能会跳转到安装64位版本的MySQL。 不好的举动…删除64位版本,如果你已经安装了(在这个可用的任务说明在这里可用),然后下载并安装32位版本(包在这里 )

关于如何构build和安装MySQLdb库有很多步骤。 他们往往有微妙的差异。 这似乎是我最受欢迎的,并提供了工作解决scheme。 我已经在下面进行了几处编辑

第0步:在我开始之前,我假设你在Mac上安装了MySQL,Python和GCC 。

步骤1:从SourceForge下载最新的Python for Python适配器 。

第2步:解压缩下载的软件包:

tar xzvf MySQL-python-1.2.2.tar.gz 

第3步:在文件夹内清洁包装:

 sudo python setup.py clean 

额外的步骤,(从这个评论 )

步骤3b:删除MySQL-python-1.2.2 / build / *目录下的所有东西 – 不要相信“python setup.py clean”为你做

步骤3c:删除Users / $ USER / .python-eggs下的蛋

第4步:最初需要编辑_mysql.c,但现在不再需要。 MySQLdb社区似乎已经修复了这个bug。

第5步:在lib下创build一个符号链接,指向一个名为mysql的子目录。 这是在编译期间查找的地方。

 sudo ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql 

第6步:编辑setup_posix.py并更改以下内容

mysql_config.path =“mysql_config”

mysql_config.path =“/ usr / local / mysql / bin / mysql_config”

第7步:在相同的目录中,重build你的包(忽略它附带的警告)

 sudo python setup.py build 

第8步:安装软件包,你就完成了。

 sudo python setup.py install 

第9步:testing它是否工作。 它可以工作,如果你可以导入MySQLdb。

 python 

>>> import MySQLdb

第10步:如果尝试导入时收到一个错误,抱怨Library not loaded: libmysqlclient.18.dylib结尾: Reason: image not found你需要创build一个额外的符号链接:

 sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib 

然后,您应该可以import MySQLdb而不会出现任何错误。

最后一个小窍门是,如果你从build目录启动Python,你会得到这个错误:

/Library/Python/2.5/site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.py:3:UserWarning:模块_mysql已从/Library/Python/2.5/导入site-packages / MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg / _mysql.pyc,但是XXXX / MySQL-python-1.2.3c1被添加到sys.path

这对Google很容易,但为了节省您在这里的麻烦(或者可能不是…不是一个特别面向未来的URL),并且找出您需要cd ..出于构build目录和错误应该消失。

正如我在顶部写的那样,我很想看到这个答案是一般化的,因为在这个可怕的问题中还有许多其他具体的经验。 编辑或提供您自己的更好的答案。

Mac OS X 10.8 (山狮), 10.9 (小牛), 10.10 (优胜美地)和10.11 (埃尔卡皮坦)的快速简单的方法:

我假设你已经安装了XCode, 命令行工具 ,Python和MySQL。

  1. 安装PIP:

     sudo easy_install pip 
  2. 编辑〜/ .profile 🙁 在Mac OS X 10.10中可能不需要)

     nano ~/.profile 

    复制并粘贴以下两行

     export PATH=/usr/local/mysql/bin:$PATH export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/ 

    保存并退出。 Afterwords执行以下命令:

     source ~/.profile 
  3. 安装MySQLdb

     sudo pip install MySQL-python 

    要testing一切正常,只要尝试

     python -c "import MySQLdb" 

它对我来说就像一个魅力。 我希望它有帮助。

如果遇到关于缺less库的错误: Library not loaded:libmysqlclient.18.dylib,那么你必须象下面这样将它链接到/usr/lib

 sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib 

通过Macports安装mysql和python搬运工已经完成了所有困难的工作。

 sudo port install py26-mysql sudo port install mysql5-server 

应该安装你需要的东西。 (请参阅堆栈溢出评论重新MySQL服务器 )

如果你只需要连接到mysql而不运行服务器,那么第一行就足够了。

Macports现在(2013年初)将为操作系统的可执行体系结构的常见组合提供二进制下载,对于其他(如果您请求的话)它将从源代码构build。

一般情况下,当需要安装复杂的库等时,macports(或fink)可以提供帮助。

Python只有代码,如果简单的C依赖可以通过setuptools等,但它开始变得复杂,如果你混合两者。

在完成第9步后收到错误之后,我需要执行另一个步骤:

 ImportError: dlopen(/Users/rick/.python-eggs/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib 

参考:谢谢! http://ageekstory.blogspot.com/2011_04_01_archive.html

安装点子:

 sudo easy_install pip 

安装brew:

 ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)" 

安装mysql:

 brew install mysql 

安装MySQLdb

 sudo pip install MySQL-python 

如果您有编译问题,请尝试编辑〜/ .profile文件,如同其中一个答案。

正如在Mac上安装MySQL-python所述 :

 pip uninstall MySQL-python brew install mysql pip install MySQL-python 

然后testing一下:

 python -c "import MySQLdb" 

刚刚得到一个新的狮子盒后,这个问题(再次!)。

我find的最佳解决scheme(仍然不是100%最佳,但工作):

可以通过从苹果下载XCode /开发工具得到它 – 这是一个大的下载 –

…但相反,我build议这个有你所需要的(并没有XCode)的github: https : //github.com/kennethreitz/osx-gcc-installer

我下载了他们的预制PKG狮子, https://github.com/downloads/kennethreitz/osx-gcc-installer/GCC-10.7-v2.pkg

  • 确保你已经下载了一个64位版本的MYSQL社区。 (DMG安装是一个简单的路线) http://dev.mysql.com/downloads/mysql/

  • 设置path如下:

    export PATH = $ PATH:/ usr / local / mysql-XXXX

    export DYLD_LIBRARY_PATH = / usr / local / mysql / lib /

    export ARCHFLAGS =' – arch x86_64'

注意:

1在上面的mysql-XXXX中,XXX是你下载的特定版本。 (可能/ usr / local / mysql /也可以工作,因为这很可能是同一个别名,但我不会假装知道你的设置)

2我已经看到它build议将ARCHFLAGS设置为“-arch i386 -arch x86_64”,但仅指定x86_64似乎对我更好。 (我可以想出一些原因,但它们并不严格相关)。

  • 安装野兽!

    easy_install MySQL-python

  • 最后一步:

永久添加DYLD_LIBRARY_PATH!

您可以将其添加到您的bash_profile或类似的。 这对我来说是缺less的一步,没有这一步,我的系统继续坚持发现_mysql.so等各种错误。

export DYLD_LIBRARY_PATH = / usr / local / mysql / lib /

@ richard-boardman,刚刚注意到你的软链接解决scheme,这实际上可能做同样的事情,我的PATH解决scheme…人,无论什么最适合你。

最佳参考: http : //activeintelligence.org/blog/archive/mysql-python-aka-mysqldb-on-osx-lion/

或者简单的尝试:

sudo easy_install MySQL-python

如果它给出一个错误

EnvironmentError:找不到mysql_config

只要运行这个

export PATH = $ PATH:/ usr / local / mysql / bin

你可以尝试使用纯python pymysql

 sudo easy_install pymysql 

(或者如果你已经安装了它,使用pip 。)然后,在你的代码中import MySQLdb之前添加这个:

 try: import pymysql pymysql.install_as_MySQLdb() except ImportError: pass 

如果您使用的是64位MySQL,那么使用ARCHFLAGS来指定您的cpu架构,同时构buildmysql-python库也可以做到这一点:

 ARCHFLAGS='-arch x86_64' python setup.py build ARCHFLAGS='-arch x86_64' python setup.py install 
 export PATH=$PATH:/usr/local/mysql/bin/ 

应该为您解决问题,因为系统无法findmysql_config文件。

在马科斯塞拉利昂这个工作对我来说,python是由pythonpipe理:

anaconda search -t conda mysql-python

anaconda show CEFCA/mysql-python

conda install --channel https://conda.anaconda.org/CEFCA mysql-python

用于SQLAlchemy:

Python 2.7.13 | Continuum Analytics,Inc. | (默认,2016年12月20日,23:05:08)[达尔文的GCC 4.2.1 Compatible Apple LLVM 6.0(clang-600.0.57)]请input“help”,“copyright”,“credits”或“license”信息。 Anaconda是由Continuum Analytics带给你的。 请查看: http : //continuum.io/thanks和https://anaconda.org

>>> from sqlalchemy import *

>>> dbengine = create_engine('mysql:// ….')