el comando ‘cc’ falló con el estado de salida 1 en OSX High Sierra

Estoy tratando de correr en Mac Os High Sierra

pip install MySQL-python 

Pero me estoy poniendo

 error: command 'cc' failed with exit status 1 

Ya probé la solución sobre este tema , pero no funcionó.

Este es el mensaje de error completo

 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/ 

Esta es la piton

 which python /usr/bin/python 

y este es el pip que estoy usando

 which pip /usr/local/bin/pip 

La respuesta de Abamert no funcionó para mí. Aunque esto fue así, podrías intentar saltarte el primer paso,

 brew install mysql-connector-c brew install mysql brew link --overwrite mysql pip install MySQL-python 

Primero, ¿estás seguro de que quieres usar MySQL-python ? Este es un proyecto en su mayoría muerto que se ha mantenido parcialmente para el soporte de legado durante la última media década, y ni siquiera funciona con las versiones actuales de MySQL. Quiere 5.0 o tal vez 5.1; la versión actual es 8.0, e incluso la versión heredada actual es 5.7.


Otras opciones incluyen:

  • mysql-connector , también conocido como MySQLConnector / Python: esta es la biblioteca con soporte oficial de MySQL / Oracle. Puede ser un poco lento, lo que no importa para la mayoría de los proyectos, pero a veces puede hacerlo. También tiene una API diferente (aunque si se adhiere a los métodos DB-API 2, la única diferencia es la llamada de conexión; más allá de eso, debería ser algo de bajo nivel que sea diferente).
  • mysqlclient : este es el paquete que utilizan Django y algunos otros frameworks. Es una bifurcación actualizada de MySQL-Python (con algunas cosas de su sucesor abandonado, moist ). Incluso se puede configurar para instalarse como MySQLdb , el mismo nombre que usa MySQL-python .
  • PyMySQL : un paquete de terceros creado para ser lo más compatible posible con el antiguo MySQL-python pero más simple y más fácil de mantener e instalar.
  • cmysql , una bifurcación de PyMySQL que es solo un poco más difícil de instalar, pero debería ser más rápida que ella, o que mysql-connector .

Algunas distribuciones de Linux, incluyendo IIRC, versiones recientes de Ubuntu, proporcionan un paquete llamado python-MySQLdb o similar que no es en realidad MySQL-python, sino mysqlclient creado con la opción de instalar como MySQLdb. Entonces, si la única razón por la que estás tratando de usar MySQL-python es que es lo que estabas usando en algún cuadro de Ubuntu, probablemente no es lo que estabas usando, y por lo tanto no es lo que quieres.

Algunas de estas alternativas también requieren MySQL (específicamente, MySQLConnector/C , también conocido como libmysqlclient , y sus bibliotecas de desarrollo), otras no, pero todas son compatibles con las versiones actuales. (Aunque hay algunas notas sobre los cambios de criptografía 8.0 en los documentos para PyMySQL y cmysql, que puede leer si usa 8.0).


De todos modos, si realmente quieres MySQL-python, entonces necesitarás instalar MySQL en una versión 5.x. La INSTALL te apunta a descargas de MySQL .

Si desea 5.0 o 5.1, tendrá que buscar en la carpeta de Downloads en uno de los servidores espejo para encontrar un paquete fuente y seguir las instrucciones para comstackrlo e instalarlo, ya que no hay instaladores binarios que funcionen en las Mac actuales.

Si desea versiones 5.x posteriores, las cuales, recuerden, no son compatibles con MySQL-python, pero podrían funcionar, Oracle todavía proporciona instaladores binarios de Mac para esas. Si no puede encontrarlos en la sección de descargas principal, la carpeta de descargas de los espejos los tendrá. A partir de este momento, 5.6 y 5.7 tienen paquetes de instaladores binarios que terminan con -macos10.13-x86_64.dmg .

Sin embargo, podría ser más feliz de instalarlo con Homebrew . Siga las instrucciones en esa página para instalar brew , y luego úselo para:

 brew install mysql@5.5 

MySQL-python también requiere bibliotecas OpenSSL, y Apple oculta deliberadamente las que usa el sistema operativo para evitar que las personas construyan código contra una versión anterior y no obtengan actualizaciones de seguridad. Las bibliotecas más nuevas deberían saber cómo manejar esto, pero MySQL-python no. La forma más fácil de instalar un OpenSSL utilizable es con Homebrew nuevamente:

 brew install openssl 

Pero no solo ejecute ese comando y cierre la ventana. Lee la salida, porque debes hacer todo lo que dice si quieres que construya MySQL-python.

Mi problema era que estaba usando la versión 8.0.12 de MySql. Tan pronto como bajé de nivel a MySQL 5.7, se instaló perfectamente. Usé lo siguiente para eliminar la versión 8 de la siguiente manera: https://gist.github.com/vitorbritto/0555879fe4414d18569d

La esencia de lo anterior fue:

  1. Compruebe los procesos de MySQL con: ps -ax | grep mysql
  2. Detener y matar cualquier proceso de MySQL
  3. elaborar cerveza quitar mysql
  4. limpieza de cerveza
  5. launchctl unload -w ~ / Library / LaunchAgents / homebrew.mxcl.mysql.plist
  6. sudo rm / usr / local / mysql
  7. sudo rm -rf / usr / local / var / mysql
  8. sudo rm -rf / usr / local / mysql *
  9. sudo rm ~ / Library / LaunchAgents / homebrew.mxcl.mysql.plist
  10. sudo rm -rf / Library / StartupItems / MySQLCOM
  11. sudo rm -rf / Library / PreferencePanes / My *
  12. rm -rf ~ / Library / PreferencePanes / My *
  13. sudo rm -rf / Library / Receipts / mysql *
  14. sudo rm -rf / Library / Receipts / MySQL *
  15. sudo rm -rf / private / var / db / receipts / mysql
  16. Reinicie su computadora solo para asegurarse de que cualquier proceso MySQL sea eliminado
  17. instale mysql utilizando brew: brew install mysql@5.7
  18. Por último, pip instalar mysql-python