我试图在Mac Os High Sierra上运行
pip install MySQL-python
但是我得到了
error: command 'cc' failed with exit status 1
我已经在this topic上尝试过该解决方案,但是没有用。
这是完整的错误消息
The directory '/Users/filipeferminiano/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/Users/filipeferminiano/Library/Caches/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Collecting MySQL-python
Downloading https://files.pythonhosted.org/packages/a5/e9/51b544da85a36a68debe7a7091f068d802fc515a3a202652828c73453cad/MySQL-python-1.2.5.zip (108kB)
100% |████████████████████████████████| 112kB 289kB/s
Installing collected packages: MySQL-python
Running setup.py install for MySQL-python ... error
Complete output from command /System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python -u -c "import setuptools, tokenize;__file__='/private/tmp/pip-install-8I1X5u/MySQL-python/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /private/tmp/pip-record-z5HohX/install-record.txt --single-version-externally-managed --compile:
running install
running build
running build_py
creating build
creating build/lib.macosx-10.13-intel-2.7
copying _mysql_exceptions.py -> build/lib.macosx-10.13-intel-2.7
creating build/lib.macosx-10.13-intel-2.7/MySQLdb
copying MySQLdb/__init__.py -> build/lib.macosx-10.13-intel-2.7/MySQLdb
copying MySQLdb/converters.py -> build/lib.macosx-10.13-intel-2.7/MySQLdb
copying MySQLdb/connections.py -> build/lib.macosx-10.13-intel-2.7/MySQLdb
copying MySQLdb/cursors.py -> build/lib.macosx-10.13-intel-2.7/MySQLdb
copying MySQLdb/release.py -> build/lib.macosx-10.13-intel-2.7/MySQLdb
copying MySQLdb/times.py -> build/lib.macosx-10.13-intel-2.7/MySQLdb
creating build/lib.macosx-10.13-intel-2.7/MySQLdb/constants
copying MySQLdb/constants/__init__.py -> build/lib.macosx-10.13-intel-2.7/MySQLdb/constants
copying MySQLdb/constants/CR.py -> build/lib.macosx-10.13-intel-2.7/MySQLdb/constants
copying MySQLdb/constants/FIELD_TYPE.py -> build/lib.macosx-10.13-intel-2.7/MySQLdb/constants
copying MySQLdb/constants/ER.py -> build/lib.macosx-10.13-intel-2.7/MySQLdb/constants
copying MySQLdb/constants/FLAG.py -> build/lib.macosx-10.13-intel-2.7/MySQLdb/constants
copying MySQLdb/constants/REFRESH.py -> build/lib.macosx-10.13-intel-2.7/MySQLdb/constants
copying MySQLdb/constants/CLIENT.py -> build/lib.macosx-10.13-intel-2.7/MySQLdb/constants
running build_ext
building '_mysql' extension
creating build/temp.macosx-10.13-intel-2.7
cc -fno-strict-aliasing -fno-common -dynamic -arch x86_64 -arch i386 -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch i386 -arch x86_64 -pipe -Dversion_info=(1,2,5,'final',1) -D__version__=1.2.5 -I/usr/local/Cellar/mysql/8.0.11/include/mysql -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c _mysql.c -o build/temp.macosx-10.13-intel-2.7/_mysql.o
_mysql.c:44:10: fatal error: 'my_config.h' file not found
#include "my_config.h"
^~~~~~~~~~~~~
1 error generated.
error: command 'cc' failed with exit status 1
----------------------------------------
Command "/System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python -u -c "import setuptools, tokenize;__file__='/private/tmp/pip-install-8I1X5u/MySQL-python/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /private/tmp/pip-record-z5HohX/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /private/tmp/pip-install-8I1X5u/MySQL-python/
这是python
which python
/usr/bin/python
这是我正在使用的点子
which pip
/usr/local/bin/pip
答案 0 :(得分:7)
首先,您确定要使用MySQL-python吗?这是一个几乎是死的项目,在过去的五年中一直为旧版支持进行半维护,甚至无法与当前版本的MySQL一起使用。它需要5.0或5.1;当前版本为8.0,甚至当前旧版本为5.7。
其他选项包括:
mysql-connector
,又名MySQLConnector / Python:这是MySQL / Oracle官方支持的库。这可能会有点慢,这对于大多数项目而言并不重要,但有时可能会如此。它也具有不同的API(尽管如果您坚持使用DB-API 2方法,则唯一的区别是connect调用;除此之外,它应该只是与众不同的低级内容)。mysqlclient
:这是Django和其他框架使用的软件包。这是MySQL-Python
的更新分支(还有一些废弃的后继产品moist
中的内容)。甚至可以将其配置为以MySQLdb
的身份安装,MySQL-python
使用相同的名称。PyMySQL
:一种第三方软件包,旨在与旧的MySQL-python
尽可能兼容,但更易于维护和安装。cmysql
,这是一个PyMySQL
的分支,它的安装难度稍高,但应该比它快或比mysql-connector
快。某些Linux发行版(包括IIRC)和Ubuntu的最新版本提供了名为python-MySQLdb
或类似的软件包,实际上不是MySQL-python,而是由mysqlclient
用install-as-MySQLdb构建的选项。因此,如果您尝试使用MySQL-python
的唯一原因是您在某些Ubuntu机器上使用的是它,则可能是不是,而不是您使用的是想要。
其中一些替代方案也需要MySQL(特别是MySQLConnector/C
,aka libmysqlclient
及其开发库),有些不需要-但它们都与当前版本兼容。 (尽管在PyMySQL和cmysql的文档中有一些关于8.0加密更改的注释,如果使用8.0则可能需要阅读。)
无论如何,如果您确实想要MySQL-python,那么您将需要以5.x版本安装MySQL。 INSTALL
会将您指向MySQL downloads。
如果要5.0或5.1,则必须在其中一个镜像中浏览Downloads
文件夹,以找到源包并按照说明进行构建和安装,因为没有二进制安装程序在当前的Mac上工作。
如果要使用更高版本的5.x版本(记住,MySQL-python不支持该版本,但可能可以使用),Oracle仍会为这些版本提供Mac二进制安装程序。如果在主下载部分找不到它们,则镜像的“下载”文件夹中将包含它们。截至目前,5.6和5.7具有以-macos10.13-x86_64.dmg
结尾的二进制安装程序包。
但是,您可能更愿意使用Homebrew安装它。请按照该页面上的说明安装brew
,然后将其用于:
brew install mysql@5.5
MySQL-python 也也需要OpenSSL库,Apple故意隐藏了OS所使用的库,以防止人们意外地针对旧版本构建代码而未获得安全更新。较新的库都应该知道如何处理,但是MySQL-python却不知道。安装可用的OpenSSL的最简单方法是再次使用Homebrew:
brew install openssl
但是不要只运行该命令并关闭窗口。阅读输出,因为如果要构建MySQL-python,则必须按照它说的做所有的事情。
答案 1 :(得分:0)
abamert的答案对我不起作用。虽然这样做,但您可以尝试跳过第一步,
s_CbFsDeleteFile()
答案 2 :(得分:0)
我的问题是我正在使用MySql版本8.0.12。一旦我降级到MySQL 5.7,它就被完美安装了。我使用以下命令通过以下方式删除了版本8:https://gist.github.com/vitorbritto/0555879fe4414d18569d
以上内容的要旨是: