如何在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。
-
安装PIP:
sudo easy_install pip
-
编辑〜/ .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
-
安装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%最佳,但工作):
-
确保你有64位的Python。 如何检查一个库是否是在Mac OS X上构build的32位/ 64位?
-
安装easy_install,如果你没有它。 http://packages.python.org/distribute/easy_install.html
-
安装GCC,如果你没有它。
你可以通过从苹果下载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:// ….')