无法在 Mac Mavericks 上安装 python mysql 库

Posted

技术标签:

【中文标题】无法在 Mac Mavericks 上安装 python mysql 库【英文标题】:Can't install python mysql library on Mac Mavericks 【发布时间】:2014-04-20 05:16:03 【问题描述】:

在山狮更新之前,它就像一个魅力。

更新后它坏了,我无法再次启动环境。

有人知道如何解决这个问题吗?

错误以粗体显示,如下所示。

fedorius@this:~$ pip install mysql-python
Downloading/unpacking mysql-python
  Downloading MySQL-python-1.2.5.zip (108kB): 108kB downloaded
  Running setup.py (path:/private/var/folders/21/zjvwzn891jnf4rnp526y13200000gn/T/pip_build_fedorius/mysql-python/setup.py) egg_info for package mysql-python

Installing collected packages: mysql-python
  Running setup.py install for mysql-python
    building '_mysql' extension
    cc -fno-strict-aliasing -fno-common -dynamic -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -mno-fused-madd -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -pipe -Dversion_info=(1,2,5,'final',1) -D__version__=1.2.5 -I/usr/local/mysql/include -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c _mysql.c -o build/temp.macosx-10.9-intel-2.7/_mysql.o -Os -g -fno-strict-aliasing -arch x86_64
    clang: error: unknown argument: '-mno-fused-madd' [-Wunused-command-line-argument-hard-error-in-future]
    clang: note: this will be a hard error (cannot be downgraded to a warning) in the future
    error: command 'cc' failed with exit status 1
    Complete output from command /usr/bin/python -c "import setuptools, tokenize;__file__='/private/var/folders/21/zjvwzn891jnf4rnp526y13200000gn/T/pip_build_fedorius/mysql-python/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /var/folders/21/zjvwzn891jnf4rnp526y13200000gn/T/pip-_yi6sy-record/install-record.txt --single-version-externally-managed --compile:
    running install

running build

running build_py

creating build

creating build/lib.macosx-10.9-intel-2.7

copying _mysql_exceptions.py -> build/lib.macosx-10.9-intel-2.7

creating build/lib.macosx-10.9-intel-2.7/MySQLdb

copying MySQLdb/__init__.py -> build/lib.macosx-10.9-intel-2.7/MySQLdb

copying MySQLdb/converters.py -> build/lib.macosx-10.9-intel-2.7/MySQLdb

copying MySQLdb/connections.py -> build/lib.macosx-10.9-intel-2.7/MySQLdb

copying MySQLdb/cursors.py -> build/lib.macosx-10.9-intel-2.7/MySQLdb

copying MySQLdb/release.py -> build/lib.macosx-10.9-intel-2.7/MySQLdb

copying MySQLdb/times.py -> build/lib.macosx-10.9-intel-2.7/MySQLdb

creating build/lib.macosx-10.9-intel-2.7/MySQLdb/constants

copying MySQLdb/constants/__init__.py -> build/lib.macosx-10.9-intel-2.7/MySQLdb/constants

copying MySQLdb/constants/CR.py -> build/lib.macosx-10.9-intel-2.7/MySQLdb/constants

copying MySQLdb/constants/FIELD_TYPE.py -> build/lib.macosx-10.9-intel-2.7/MySQLdb/constants

copying MySQLdb/constants/ER.py -> build/lib.macosx-10.9-intel-2.7/MySQLdb/constants

copying MySQLdb/constants/FLAG.py -> build/lib.macosx-10.9-intel-2.7/MySQLdb/constants

copying MySQLdb/constants/REFRESH.py -> build/lib.macosx-10.9-intel-2.7/MySQLdb/constants

copying MySQLdb/constants/CLIENT.py -> build/lib.macosx-10.9-intel-2.7/MySQLdb/constants

running build_ext

building '_mysql' extension

creating build/temp.macosx-10.9-intel-2.7

cc -fno-strict-aliasing -fno-common -dynamic -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -mno-fused-madd -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -pipe -Dversion_info=(1,2,5,'final',1) -D__version__=1.2.5 -I/usr/local/mysql/include -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c _mysql.c -o build/temp.macosx-10.9-intel-2.7/_mysql.o -Os -g -fno-strict-aliasing -arch x86_64

**clang: error: unknown argument: '-mno-fused-madd' [-Wunused-command-line-argument-hard-error-in-future]
clang: note: this will be a hard error (cannot be downgraded to a warning) in the future
error: command 'cc' failed with exit status 1**

----------------------------------------
Cleaning up...
Command /usr/bin/python -c "import setuptools, tokenize;__file__='/private/var/folders/21/zjvwzn891jnf4rnp526y13200000gn/T/pip_build_fedorius/mysql-python/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /var/folders/21/zjvwzn891jnf4rnp526y13200000gn/T/pip-_yi6sy-record/install-record.txt --single-version-externally-managed --compile failed with error code 1 in /private/var/folders/21/zjvwzn891jnf4rnp526y13200000gn/T/pip_build_fedorius/mysql-python
Storing debug log for failure in /var/folders/21/zjvwzn891jnf4rnp526y13200000gn/T/tmp5QBn55

更新:

按照建议,我添加了

导出 CFLAGS=-Qunused-arguments 导出 CPPFLAGS=-Qunused-arguments

但是它将错误更改为

error: /Library/Python/2.7/site-packages/_mysql.so: Permission denied

我刚刚修改了这个目录以允许写入并且它工作了:) 这是由于混合了 macports、easy_install 和 pip...真丢脸。

【问题讨论】:

【参考方案1】:

问题是由于 Xcode 5.1 中引入的更改以及 Apple 提供的系统 Python 2.7 的构建方式造成的。在运行pip之前尝试添加这些环境变量值:

export CFLAGS=-Qunused-arguments
export CPPFLAGS=-Qunused-arguments

更多信息请参见clang error: unknown argument: '-mno-fused-madd' (python package installation failure)。

更新 [2014-05-16]:正如预期的那样,Apple 已在 OS X 10.9.3 中通过更新的系统 Python(2.7、2.6 和 2.5)修复了此问题,因此在使用最新的 Mavericks 和 @ 时不再需要解决方法987654325@。但是,到目前为止,如果您在那里使用Xcode 5.1+OS X 10.8.x(Mountain Lion,当前为 10.8.5)仍然需要解决方法。

【讨论】:

谢谢!现在我遇到了权限错误...如果我使用 sudo 运行,我仍然会遇到同样的问题。 您可能需要重做sudo 下的导出。尝试类似:sudo bashexport ...export ...pip ... 你是救命恩人!这也适用于安装枕头 你刚刚拯救了我的整个周末。我无法自己修复错误。 :) 工作没有任何问题。 这是一个愚蠢的错误,因为苹果方面缺乏测试:在 OS X 发布周期的中间引入 Xcode 中的新功能。我希望它会在 OS X 的下一个维护版本中得到修复。【参考方案2】:

基于 Ned 的回答:

由于我不想使用sudo安装包(我使用的是虚拟环境)或者影响我的gobal环境,所以我将这两个变量添加到pip install单次执行中:

CFLAGS=-Qunused-arguments CPPFLAGS=-Qunused-arguments pip install -r requirements.txt

【讨论】:

以上是关于无法在 Mac Mavericks 上安装 python mysql 库的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 Mavericks 在我的 Mac 上安装 PG gem

在 Mac Mavericks 上使用 Homebrew 安装犰狳

尝试在 Mac (Mavericks) 上安装 lxml 以在 Django 1.5 中使用时出错

在 OS X 10.9 (Mavericks) 上安装 Java

无法在安装了命令行工具的 Mavericks 上使用 xcodebuild

无法更新 Macports(使用 Mac OS X Mavericks)