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

2020-12-04 15:11:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个Python新手,但我刚刚花了一天的时间来研究如何让MySQLdb正常工作,google提供的universe包含了很多关于PITA是什么的参考,以及大量看起来过时的指南。鉴于这个网站是为了解决这些问题,我知道我需要一个参考的解决方案在未来,我要问的问题,提供我的答案,看看还有什么漂浮到表面。

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

3条回答
网友
1楼 ·

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

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

应该安装你需要的。(见Stack overflow for comments re mysql server

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

Macports now(2013年初)将为操作系统和可执行架构的常见组合提供二进制下载,其他人(如果您要求)将从源代码构建。

一般来说,当需要安装复杂的库等时,macports(或fink)会提供帮助。

仅限Python的代码,如果简单的C依赖项可以通过setuptools等设置,但是如果将两者混合使用,就会变得复杂。

网友
2楼 ·

对于Mac OS X来说,这是一个快速而简单的方法:10.8(山狮)、10.9(小牛)、10.10(优胜美地)和10.11(El Capitan):

我假设您已经安装了XCode、它的command line tools、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/
    

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

    source  ~/.profile
    
  3. 安装MySQLdb

    sudo pip install MySQL-python
    

    测试一切是否正常只要试试

    python -c "import MySQLdb"
    

这对我来说是一种魅力。我希望有帮助。

如果遇到有关缺少库的错误:库未加载:libmysqlclient.18.dylib,则必须将其符号链接到/usr/lib,如下所示:

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib 
网友
3楼 ·

使用Python3的更新: 您可以简单地使用conda install mysqlclient来安装使用MySQLdb所需的库,因为MySQLdb目前已经存在。下面的SO问题是一个有用的线索:Python 3 ImportError: No module named 'ConfigParser'。安装mysqlclient将安装mysqlclient、mysql connector和llvmdev(至少,它在我的计算机上安装了这3个库)。

这是我在这个问题上漫无目的的经历。如果你对这个问题有更好的经验,希望看到它被编辑或概括。。。施点魔法吧。

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

首先,作者(仍然?)MySQLdb的here说,最有害的问题之一是OS X安装了32位版本的Python,但大多数普通joe(包括我自己)可能会跳到安装64位版本的MySQL。糟糕的举动。。。如果已经安装了64位版本,请将其删除(有关此任务的说明可在SOhere上找到),然后下载并安装32位版本(软件包here

关于如何构建和安装MySQLdb库有很多步骤。它们常常有细微的差别。This对我来说似乎是最受欢迎的,并提供了有效的解决方案。我在下面的几处编辑中复制了它

步骤0: 在开始之前,我假设您已经在mac上安装了MySQL、Python和GCC

步骤1: 从SourceForge下载最新的MySQL for Python adapter

第2步: 提取下载的包:

tar xzvf MySQL-python-1.2.2.tar.gz

第3步: 在文件夹中,清理包:

sudo python setup.py clean

几个额外的步骤(从this comment

步骤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的子目录。这是它在编译期间查找的位置。

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

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

mysql_config.path=“mysql_配置”

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

第7步: 在同一目录中,重新生成包(忽略它附带的警告)

sudo python setup.py build

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

sudo python setup.py install

第9步: 测试它是否有效。如果您可以导入MySQLdb,它就可以工作。

python

>>>import MySQLdb

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

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

然后,您应该能够import MySQLdb无任何错误。

最后一个小问题是,如果从构建目录启动Python,则会出现以下错误:

/Library/Python/2.5/site packages/MySQL_Python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_MySQL.py:3:用户警告:Module _MySQL已经从/Library/Python/2.5/site-packages/MySQL_Python-1.2.3c1-py2.5-macosx-10.5-i386.egg//MySQL.pyc导入,但是在sys.path中添加了XXXX/MySQL-Python-1.2.3c1

这对Google来说很容易,但是为了省去你的麻烦,你最终会here(或者可能不会。。。不是一个特别经得起未来考验的URL)并指出需要cd ..退出构建目录,错误应该会消失。

正如我在顶部所写的,我很想看到这个答案的概括性,因为有许多其他的具体经验,这个可怕的问题在那里。编辑离开,或者提供你自己更好的答案。

相关问题