在Snow Leopard上安装MySQLdb

时间:2010-07-19 22:34:08

标签: python mysql django

我在尝试在雪豹上安装MySQLdb(1.2.2)时遇到各种各样的麻烦。我正在运行python 2.5.1和MySQL 5.1 32位。

Python和MySQL运行得很好。

我也安装了django 1.2.1,虽然我不认为那些重要,但想要了解我正在尝试安装的堆栈。我正在使用python 2.5.x,因为我的webhost只有该版本作为选项,我希望尽可能接近我的生产环境。

反正...

在关注修改_mysql.c和setup_posix.py等的许多现有文章和教程之后,我仍然遇到了麻烦。

这是我的堆栈跟踪:

xxxxxxx-mbp:MySQL-python-1.2.2 xxxxxxx $ sudo ARCHFLAGS =“ - arch x86_64”python setup.py build 运行构建 运行build_py 创建构建 创建build / lib.macosx-10.3-i386-2.5 复制_mysql_exceptions.py - >建立/ lib.macosx-10.3-i386-2.5 创建build / lib.macosx-10.3-i386-2.5 / MySQLdb 复制MySQLdb / init .py - >建立/ lib.macosx-10.3-i386-2.5 / MySQLdb的 复制MySQLdb / converters.py - >建立/ lib.macosx-10.3-i386-2.5 / MySQLdb的 复制MySQLdb / connections.py - >建立/ lib.macosx-10.3-i386-2.5 / MySQLdb的 复制MySQLdb / cursors.py - >建立/ lib.macosx-10.3-i386-2.5 / MySQLdb的 复制MySQLdb / release.py - >建立/ lib.macosx-10.3-i386-2.5 / MySQLdb的 复制MySQLdb / times.py - >建立/ lib.macosx-10.3-i386-2.5 / MySQLdb的 创建build / lib.macosx-10.3-i386-2.5 / MySQLdb / constants 复制MySQLdb /常量/ init .py - >建立/ lib.macosx-10.3-i386-2.5 / MySQLdb的/常数 复制MySQLdb / constants / CR.py - >建立/ lib.macosx-10.3-i386-2.5 / MySQLdb的/常数 复制MySQLdb / constants / FIELD_TYPE.py - >建立/ lib.macosx-10.3-i386-2.5 / MySQLdb的/常数 复制MySQLdb / constants / ER.py - >建立/ lib.macosx-10.3-i386-2.5 / MySQLdb的/常数 复制MySQLdb / constants / FLAG.py - >建立/ lib.macosx-10.3-i386-2.5 / MySQLdb的/常数 复制MySQLdb /常量/ REFRESH.py - >建立/ lib.macosx-10.3-i386-2.5 / MySQLdb的/常数 复制MySQLdb / constants / CLIENT.py - >建立/ lib.macosx-10.3-i386-2.5 / MySQLdb的/常数 运行build_ext 构建'_mysql'扩展 创建build / temp.macosx-10.3-i386-2.5 gcc -isysroot /Developer/SDKs/MacOSX10.4u.sdk -fno-strict-aliasing -Wno-long-double -no-cpp-precomp -mno-fused-madd -fno-common -dynamic -DNDEBUG -g -O3 - Dversion_info =(1,2,2,'final',0)-D__version __ = 1.2.2 -I / usr / local / mysql-5.1.48-osx10.6-x86 / include -I / Library / Frameworks / Python。 framework / Versions / 2.5 / include / python2.5 -c _mysql.c -o build / temp.macosx-10.3-i386-2.5 / _mysql.o -g -Os -arch i386 -fno-common -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DIGNORE_SIGHUP_SIGQUIT -DDONT_DECLARE_CXA_PURE_VIRTUAL 在/Developer/SDKs/MacOSX10.4u.sdk/usr/include/wchar.h:112中包含的文件中,                  from /Library/Frameworks/Python.framework/Versions/2.5/include/python2.5/unicodeobject.h:118,                  来自/Library/Frameworks/Python.framework/Versions/2.5/include/python2.5/Python.h:83,                  来自pymemcompat.h:10,                  来自_mysql.c:29: /Developer/SDKs/MacOSX10.4u.sdk/usr/include/stdarg.h:4:25:错误:stdarg.h:没有这样的文件或目录 在_mysql.c:35中包含的文件中: /usr/local/mysql-5.1.48-osx10.6-x86/include/my_config.h:1062:1:警告:“HAVE_WCSCOLL”重新定义 在/Library/Frameworks/Python.framework/Versions/2.5/include/python2.5/Python.h:8中包含的文件中,                  来自pymemcompat.h:10,                  来自_mysql.c:29: /Library/Frameworks/Python.framework/Versions/2.5/include/python2.5/pyconfig.h:724:1:警告:这是前一个定义的位置 错误:命令'gcc'失败,退出状态为1

有没有人有任何想法?

3 个答案:

答案 0 :(得分:1)

对于原始问题来说相当晚,但是如果其他人 - 像我一样 - 遇到了缺少stdarg.h的谜团,请参见下文。我正在使用MacOS X 10.7.3,MySQL 5.5.20,Python 2.7.2,MySQL-python-1.2.3。

我的错误讯息:

/Developer/SDKs/MacOSX10.6.sdk/usr/include/stdarg.h:4:25: error: stdarg.h: No such file or directory

以下博客文章救了我:     http://packetcloud.net/2009/09/22/installing-mysql-python-module-for-python-262-on-snow-leopard-using-xcode/

总结关键位:

打开/Developer/SDKs/MacOSX10.6.sdk/usr/include/stdarg.h

替换行:

#include_next <stdarg.h>

使用:

#include_next </Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/stdarg.h>

然后事情顺利进行:

> sudo ARCHFLAGS='-arch x86_64' python setup.py build
> sudo ARCHFLAGS='-arch x86_64' python setup.py install

答案 1 :(得分:0)

我通常使用MacPorts安装这样的软件包。它是包管理软件,可以为您处理所有下载,配置和安装。就像在gentoo上出现或者在debian上使用apt-get一样。

确保已安装Xcode并install macports。安装好后,启动终端并输入以下命令安装mysql:

$ sudo port install mysql5-server

答案 2 :(得分:0)

我试着解决这个问题几天,最后放弃了。

我改用postgres。雪豹上的django效果很好, 有一个小问题。由于某种原因,auto_inc pk id不会被分配 某些型号。我通过从一个大的随机分配id解决了这个问题 随机范围,并依靠唯一的列指定来防止碰撞。

我的生产服务器是linux。 Mysql和postgres安装得很好。

事实上,许多#django irc频道建议运行虚拟linux 在Mac上的实例来解决我的mysql安装问题。