J'essaie de courir sur Mac Os High Sierra
pip install MySQL-python
Mais j'obtiens
error: command 'cc' failed with exit status 1
J'ai déjà essayé la solution sur ce sujet , mais cela n'a pas fonctionné.
C'est le message d'erreur complet
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/
C'est le python
which python
/usr/bin/python
et c'est le pip que j'utilise
which pip
/usr/local/bin/pip
la réponse d'abamert n'a pas fonctionné pour moi. Bien que cela soit le cas, vous pouvez essayer de sauter la première étape,
brew install mysql-connector-c
brew install mysql
brew link --overwrite mysql
pip install MySQL-python
Tout d’abord, êtes-vous sûr de vouloir utiliser MySQL-python ? Il s’agit d’un projet pratiquement mort qui a été semi-maintenu pour la prise en charge de l’héritage au cours des cinq dernières années et ne fonctionne même pas avec les versions actuelles de MySQL. Il veut 5.0 ou peut-être 5.1; la version actuelle est 8.0 et même la version actuelle est 5.7.
Les autres options incluent:
mysql-connector
, alias MySQLConnector/Python: Il s'agit de la bibliothèque officiellement prise en charge, à partir de MySQL/Oracle. Cela peut être un peu lent, ce qui n’a aucune importance pour la plupart des projets, mais cela peut parfois arriver. Elle a également une API différente (bien que, si vous vous en tenez aux méthodes de DB-API 2, la seule différence est l'appel de connexion; au-delà, il devrait s'agir uniquement d'éléments de bas niveau qui sont différents).mysqlclient
: Ceci est le paquet que Django et certains autres frameworks utilisent. C'est une fourchette mise à jour de MySQL-Python
(avec quelques éléments de son successeur abandonné, moist
). Il peut même être configuré pour s’installer lui-même sous le nom MySQLdb
, du même nom que celui utilisé par MySQL-python
.PyMySQL
: package tiers conçu pour être aussi compatible que possible avec l'ancien MySQL-python
, mais plus simple et plus facile à gérer et à installer.cmysql
, une fourchette de PyMySQL
qui n'est que légèrement plus difficile à installer, mais qui devrait être plus rapide que celle-ci, ou que mysql-connector
.Certaines distributions Linux, y compris IIRC et les versions récentes d'Ubuntu, fournissent un paquet nommé python-MySQLdb
ou similaire qui n'est pas réellement MySQL-python, mais plutôt mysqlclient
construit avec l'option install-as-MySQLdb. Donc, si la seule raison pour laquelle vous essayez d’utiliser MySQL-python
est que c’est ce que vous utilisiez sur une boîte Ubuntu, c’est probablement pas ce que vous utilisiez, et donc pas ce que vous voulez.
Certaines de ces alternatives requièrent également MySQL (en particulier MySQLConnector/C
, également appelé libmysqlclient
et ses bibliothèques de développement), d'autres non, mais elles sont toutes compatibles avec les versions actuelles. (Bien qu'il y ait quelques notes sur les changements de chiffrement 8.0 dans les documents pour PyMySQL et cmysql, que vous voudrez peut-être lire si vous utilisez 8.0.)
Quoi qu'il en soit, si vous voulez vraiment MySQL-python, vous devrez installer MySQL dans une version 5.x. La INSTALL
vous dirige vers Téléchargements MySQL .
Si vous souhaitez utiliser la version 5.0 ou 5.1, vous devrez parcourir le dossier Downloads
de l'un des miroirs pour trouver un paquet source et suivre les instructions pour le construire et l'installer, car aucun programme d'installation binaire ne fonctionne sur les Mac actuels.
Si vous voulez des versions 5.x ultérieures, qui, rappelez-vous, ne sont pas prises en charge par MySQL-python, mais qu'elles peuvent fonctionner, Oracle fournit toujours des programmes d'installation binaires Mac pour celles-ci. Si vous ne les trouvez pas dans la section principale des téléchargements, le dossier Téléchargements des miroirs les aura. À l'heure actuelle, les versions 5.6 et 5.7 ont des packages d'installation binaires se terminant par -macos10.13-x86_64.dmg
.
Cependant, vous serez peut-être plus heureux de l’installer avec Homebrew . Suivez les instructions sur cette page pour installer brew
, puis pour l’utiliser pour:
brew install [email protected]
MySQL-python also nécessite des bibliothèques OpenSSL, et Apple cache délibérément celles utilisées par le système d'exploitation pour empêcher les personnes de construire accidentellement du code par rapport à une ancienne version et de ne pas obtenir de mises à jour de sécurité. Les nouvelles bibliothèques devraient toutes savoir comment gérer cela, mais pas MySQL-python. Le moyen le plus simple d’installer un OpenSSL utilisable est de nouveau avec Homebrew:
brew install openssl
Mais ne lancez pas cette commande et ne fermez pas la fenêtre. Lisez le résultat, car vous devez faire tout ce que vous dites si vous voulez que MySQL-python soit construit.
Mon problème était que j'utilisais MySQL Version 8.0.12. Dès que je suis passé à MySQL 5.7, il était parfaitement installé. J'ai utilisé ce qui suit pour supprimer la version 8: https://Gist.github.com/vitorbritto/0555879fe4414d18569d
L'essentiel de ce qui précède était: