How to install MySQLdb (Python data access library to MySQL) on Mac OS X?
我是一个python的新手,但是我花了一天的时间来研究如何让mysqldb正常工作,根据google的说法,这个宇宙包含了大量关于pita是什么的引用,以及大量过时的指南。考虑到这个网站是为了解决这些问题,我知道将来我需要一个解决方案的参考,我会问这个问题,提供我的答案,看看还有什么能浮到水面上。
所以问题是如何让mysqldb在macosx上工作?
使用python3的更新:您可以简单地使用
这是我在这个问题上漫无目的的经历的故事。如果你对这个问题有更好的经验的话,我很乐意看到它被编辑或概括…用点魔法吧。
注意:下一段中的注释适用于雪豹,但不适用于狮子,这似乎需要64位MySQL
首先,作者(还是?)在mysqldb中,这里提到的一个最有害的问题是os x安装了32位版本的python,但是大多数普通的joe(包括我自己)可能会跳到安装64位版本的mysql上。糟糕的举动…如果已经安装了64位版本,请将其删除(此处提供了有关此复杂任务的说明),然后下载并安装32位版本(此处打包)
关于如何构建和安装mysqldb库,有许多步骤。它们经常有细微的差别。这对我来说似乎是最流行的,并提供了有效的解决方案。我在下面的几处编辑中复制了它
步骤0:在开始之前,我假设您已经在Mac上安装了MySQL、Python和GCC。
步骤1:从sourceforge下载最新的mysql for python适配器。
步骤2:提取下载的包:
1 | tar xzvf MySQL-python-1.2.2.tar.gz |
步骤3:在文件夹内,清洁包:
1 | sudo python setup.py clean |
几个额外的步骤(从这个评论)
步骤3b:删除mysql-python-1.2.2/build/*目录下的所有内容——不要相信"python setup.py clean"会为您做这些。
步骤3c:删除users/$user/.python eggs下的egg
步骤4:最初需要编辑mysql.c,但现在不再需要了。mysqldb社区现在似乎已经修复了这个bug。
步骤5:在lib下创建一个符号链接,指向名为mysql的子目录。这是它在编译期间查找的地方。
1 | sudo ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql |
步骤6:编辑设置"posix.py"并更改以下内容
mysql_config.path="mysql_config"
到
mysql_config.path="/usr/local/mysql/bin/mysql_config"
步骤7:在同一目录中,重新生成包(忽略它附带的警告)
1 | sudo python setup.py build |
步骤8:安装软件包,就完成了。
1 | sudo python setup.py install |
步骤9:测试它是否工作。如果您可以导入mysqldb,它就会工作。
1 | python |
>>>
步骤10:如果在尝试导入时收到错误,投诉
1 | sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib |
然后,您应该能够在没有任何错误的情况下执行ecx1(1)。
但最后一个问题是,如果从构建目录启动python,则会出现以下错误:
/library/python/2.5/site packages/mysql_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.py:3:userwarning:module _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
这对谷歌来说很容易,但是为了省去麻烦,你最终会在这里(或者可能不会……不是一个特别适合未来使用的URL),并发现需要从构建目录中删除cx1(5),错误应该会消失。
正如我在顶部写的,我很想看到这个答案被概括,因为有许多其他关于这个可怕问题的具体经验。编辑掉,或者提供你自己的更好的答案。
Mac OS X 10.8(美洲狮)、10.9(小牛)、10.10(约塞米蒂)和10.11(El Capitan)的快速简便方法:
我假设您已经安装了Xcode、它的命令行工具、python和mysql。
安装PIP:
1 | sudo easy_install pip |
编辑~/.profile:(在Mac OS X 10.10中可能不需要)
1 | nano ~/.profile |
复制并粘贴以下两行
1 2 | export PATH=/usr/local/mysql/bin:$PATH export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/ |
保存并退出。afterwords执行以下命令:
1 | source ~/.profile |
安装MySQL LDB
1 | sudo pip install MySQL-python |
要测试一切是否正常,只需尝试
1 | python -c"import MySQLdb" |
这对我来说很有吸引力。希望能有所帮助。
如果遇到缺少库的错误:库未加载:libmysqlclient.18.dylib,则必须将其符号链接到
1 | sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib |
通过MacPorts安装mysql和python,移植人员完成了所有困难的工作。
1 2 | sudo port install py26-mysql sudo port install mysql5-server |
应该安装你需要的。(有关re mysql服务器的注释,请参阅堆栈溢出)
如果只需要连接到MySQL而不运行服务器,那么第一行就足够了。
MacPorts Now(2013年初)将为操作系统的通用组合提供二进制下载,这是一种可执行的体系结构,对于其他人(如果您要求的话),它将从源代码构建。
通常,当需要安装复杂的库等时,MacPorts(或Fink)会提供帮助。
只有python代码,如果简单的c依赖项可以通过安装工具等来设置,但是如果混合使用这两者,就会变得复杂起来。
安装PIP:
1 | sudo easy_install pip |
安装BREW:
1 | ruby -e"$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)" |
安装MySQL:
1 | brew install mysql |
安装MySQL LDB
1 | sudo pip install MySQL-python |
如果您有编译问题,请尝试编辑~/.profile文件,就像这里的答案一样。
以下是我在完成步骤9时收到错误后必须完成的另一个步骤:
1 2 3 | 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
如Mac上安装mysql python所述:
1 2 3 | pip uninstall MySQL-python brew install mysql pip install MySQL-python |
然后测试它:
1 | python -c"import MySQLdb" |
刚刚遇到这个问题(又一次!)在得到一个新的狮子盒之后。
我找到的最佳解决方案(仍然不是100%最佳,但有效):
确保您有64位的python。如何检查库是否是基于Mac OS X构建的32位/64位库?
如果没有,安装简易安装。http://packages.python.org/distribute/easy_install.html
如果没有,安装gcc。
你可以从苹果下载xcode/dev工具,这是一个大的下载-
…但是我推荐这个Github,它有您需要的(并且没有xcode):https://github.com/kennethreitz/osx-gcc-installer
我下载了他们为Lion预建的pkg,https://github.com/downloads/kennethreitz/osx-gcc-installer/gcc-10.7-v2.pkg
确保下载了64位版本的MySQL社区。(DMG安装是一个简单的路径)http://dev.mysql.com/downloads/mysql/
设置路径如下:
导出路径=$path:/usr/local/mysql-xxxx
导出dyld_library_path=/usr/local/mysql/lib/
导出archflags='-arch x86_64'
注意:
1 in mysql-XXXX above, XXX is the specific version you downloaded. (Probably /usr/local/mysql/ would also work since this is most likely an alias to the same, but I won't pretend to know your setup)
2 I have seen it suggested that ARCHFLAGS be set to '-arch i386 -arch x86_64' but specifying only x86_64 seemed to work better for me. (I can think of some reasons for this but they are not strictly relevant).
安装野兽!
易于安装mysql python
最后一步:
永久添加Dyld_库路径!
您可以将其添加到您的bash_配置文件或类似文件中。这对我来说是一个缺失的步骤,如果没有这个步骤,我的系统会继续坚持各种错误查找,比如mysql.so等等。
导出dyld_library_path=/usr/local/mysql/lib/
@Richard Boardman,刚注意到你的软链接解决方案,它实际上可能和我的路径解决方案做的一样……伙计们,无论什么对你最有效。
最佳参考文献:http://activeintelligence.org/blog/archive/mysql-python-aka-mysqldb-on-osx-lion/
或者简单的尝试:
1 | > sudo easy_install MySQL-python |
如果出现如下错误:
EnvironmentError: mysql_config not found
,然后运行这个
1 | > export PATH=$PATH:/usr/local/mysql/bin |
您可以尝试使用纯python
1 | sudo easy_install pymysql |
(或者如果安装了
1 2 3 4 5 | try: import pymysql pymysql.install_as_MySQLdb() except ImportError: pass |
在Macos Sierra上,这对我很有用,Python由Python管理:
与SQLAlchemy一起使用的:
Python 2.7.13 |Continuum Analytics, Inc.| (default, Dec 20 2016, 23:05:08)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
Type"help","copyright","credits" or"license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://anaconda.org>>> from sqlalchemy import *
>>>dbengine = create_engine('mysql://....')
1 | export PATH=$PATH:/usr/local/mysql/bin/ |
应该为您解决这个问题,因为系统找不到mysql_配置文件。
如果您使用的是64位mysql,那么在构建mysql python库的同时使用archflags来指定您的CPU体系结构就可以做到:
1 2 | ARCHFLAGS='-arch x86_64' python setup.py build ARCHFLAGS='-arch x86_64' python setup.py install |