web-dev-qa-db-fra.com

Installation de MySQL-python sur mac

J'utilise OSX 10.8 et PyCharm pour travailler sur un projet de développement Python. J'ai installé MySQL-python pour le Mac en suivant les instructions du site. 

http://blog.infoentropy.com/MySQL-python_EnvironmentError_mysql_config_not_found

Cependant, l'exécution du projet me donne cette erreur:

Django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: dlopen(/Users/ashishagarwal/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.6-intel.Egg-tmp/_mysql.so, 2): Symbol not found: _mysql_affected_rows
  Referenced from: /Users/ashishagarwal/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.6-intel.Egg-tmp/_mysql.so
  Expected in: flat namespace
 in /Users/ashishagarwal/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.6-intel.Egg-tmp/_mysql.so

Le fichier mentionné dans l'erreur existe à l'emplacement /Users/ashishagarwal/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.6-intel.Egg-tmp/_mysql.so 

Le message d'erreur entier est -

/usr/local/bin/python2.7-32 /Users/ashishagarwal/Optimus/MashPotato/backend/mashpotato/manage.py testserver --addrport 8000
Running on development server
Traceback (most recent call last):
  File "/Users/ashishagarwal/Optimus/MashPotato/backend/mashpotato/manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Django/core/management/__init__.py", line 453, in execute_from_command_line
    utility.execute()
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Django/core/management/__init__.py", line 392, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Django/core/management/__init__.py", line 272, in fetch_command
    klass = load_command_class(app_name, subcommand)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Django/core/management/__init__.py", line 77, in load_command_class
    module = import_module('%s.management.commands.%s' % (app_name, name))
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Django/utils/importlib.py", line 35, in import_module
    __import__(name)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/south/management/commands/__init__.py", line 10, in <module>
    import Django.template.loaders.app_directories
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Django/template/loaders/app_directories.py", line 23, in <module>
    mod = import_module(app)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Django/utils/importlib.py", line 35, in import_module
    __import__(name)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Django/contrib/admin/__init__.py", line 3, in <module>
    from Django.contrib.admin.helpers import ACTION_CHECKBOX_NAME
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Django/contrib/admin/helpers.py", line 4, in <module>
    from Django.contrib.admin.util import (flatten_fieldsets, lookup_field,
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Django/contrib/admin/util.py", line 6, in <module>
    from Django.db import models
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Django/db/__init__.py", line 40, in <module>
    backend = load_backend(connection.settings_dict['ENGINE'])
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Django/db/__init__.py", line 34, in __getattr__
    return getattr(connections[DEFAULT_DB_ALIAS], item)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Django/db/utils.py", line 93, in __getitem__
    backend = load_backend(db['ENGINE'])
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Django/db/utils.py", line 27, in load_backend
    return import_module('.base', backend_name)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Django/utils/importlib.py", line 35, in import_module
    __import__(name)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Django/db/backends/mysql/base.py", line 17, in <module>
    raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
Django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: dlopen(/Users/ashishagarwal/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.6-intel.Egg-tmp/_mysql.so, 2): Symbol not found: _mysql_affected_rows
  Referenced from: /Users/ashishagarwal/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.6-intel.Egg-tmp/_mysql.so
  Expected in: flat namespace
 in /Users/ashishagarwal/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.6-intel.Egg-tmp/_mysql.so

Process finished with exit code 1
32
Ashish Agarwal

Vous devez installer MySQL via Homebrew first pour que python-mysql fonctionne correctement sous OS X.

pip uninstall MySQL-python
brew install mysql
pip install MySQL-python
84
kissgyorgy

Assurez-vous de disposer de la version la plus récente de Xcode, y compris des outils de ligne de commande. J'ai simplement téléchargé la mise à jour de 2 Go depuis l'App Store. J'ai eu un problème similaire, en particulier this , et cela l'a corrigé. 

À votre santé!

0
garbanzio

J'ai installé mysql il y a longtemps avec homebrew, donc quand j'ai eu des problèmes après la mise à jour d'OSX, je l'ai réinstallé avec brew reinstall [email protected] (j'ai exécuté 5.7.10) et j'ai réinstallé MySQL-python. Je m'attendais à ce qu'il soit résolu. Vous avez l'erreur mentionnée ci-dessus.

J'y ai vraiment pensé et après y avoir passé plusieurs heures, je ne savais pas quoi faire, reconstruit à partir de sources. J'ai essayé d'autres applications python pour mysql, mais c'était la même chose. 

J'ai en quelque sorte réalisé que le client créé par MySQL-python était contre la mauvaise version. J'ai donc vérifié à quel endroit le /usr/local/opt/mysql était lié et il l'était, il était lié à une version précédente que j'avais installée via dmg il y a 7 ans! Une fois que j'ai supprimé ce lien puis exécuté brew link mysql, puis créé un nouveau virtualenv et installé tous les paquets à partir de zéro, cela a finalement fonctionné! 

0
Gesias