Comment utiliser MySQLdb avec Python et Django dans OSX 10.6?

259

Il s'agit d'un problème très discuté pour les utilisateurs d'OSX 10.6, mais je n'ai pas pu trouver de solution qui fonctionne. Voici ma configuration:

Python 2.6.1 64 bits Django 1.2.1 MySQL 5.1.47 osx10.6 64 bits

Je crée un virtualenvwrapper avec --no-site-packages, puis installe Django. Lorsque j'active virtualenv et exécute python manage.py syncdb, j'obtiens cette erreur:

Traceback (most recent call last):
File "manage.py", line 11, in <module>
  execute_manager(settings)
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/core/management/__init__.py", line 438, in execute_manager
  utility.execute()
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/core/management/__init__.py", line 379, in execute
  self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/core/management/__init__.py", line 257, in fetch_command
  klass = load_command_class(app_name, subcommand)
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/core/management/__init__.py", line 67, in load_command_class
  module = import_module('%s.management.commands.%s' % (app_name, name))
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/utils/importlib.py", line 35, in import_module
  __import__(name)
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/core/management/commands/syncdb.py", line 7, in <module>
from django.core.management.sql import custom_sql_for_model, emit_post_sync_signal
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/core/management/sql.py", line 5, in <module>
from django.contrib.contenttypes import generic
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/contrib/contenttypes/generic.py", line 6, in <module>
  from django.db import connection
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/db/__init__.py", line 75, in <module>
  connection = connections[DEFAULT_DB_ALIAS]
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/db/utils.py", line 91, in __getitem__
  backend = load_backend(db['ENGINE'])
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/db/utils.py", line 32, in load_backend
  return import_module('.base', backend_name)
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/utils/importlib.py", line 35, in import_module
  __import__(name)
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/db/backends/mysql/base.py", line 14, in <module>
  raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

J'ai également installé l' adaptateur MySQL pour Python , mais en vain (peut-être que je l'ai mal installé?).

Quelqu'un a traité cela avant?

Joe
la source
5
Ce problème est le résultat d'une installation incomplète / incorrecte de l'adaptateur MySQL pour Python. Plus précisément, j'ai dû modifier le chemin d'accès au fichier mysql_config pour pointer vers / usr / local / mysql / bin / mysql_config - discuté plus en détail dans cet article: dakrauth.com/blog/entry/…
Joe
il suffit de faire cela ---------- apt-get install python-mysqldb
shadow0359
pip install mysqltravaillé pour moi!
Ivan Carrasco Quiroz

Réponses:

330

J'ai eu la même erreur et je l'ai pip install MySQL-pythonrésolue pour moi.

Installations alternatives:

  • Si vous n'avez pas de pip, ça easy_install MySQL-pythondevrait marcher.
  • Si votre python est géré par un système de packaging, vous devrez peut-être utiliser ce système (par exemple sudo apt-get install ...)

Ci-dessous, Soli note que si vous recevez l'erreur suivante:

EnvironmentError: mysql_config not found

... alors vous avez un autre problème de dépendance système. La résolution de ce problème variera d'un système à l'autre, mais pour les systèmes dérivés de Debian:

sudo apt-get install python-mysqldb

Clint
la source
2
oui, j'ai utilisé Synaptic Package Manager pour rechercher mysql-python et installer et cela a très bien fonctionné. Merci.
Tomasz Iniewicz
6
Sous Fedora 17: sudo yum install MySQL-python:)
g19fanatic
20
$ mysql_configLe programme 'mysql_config' n'est actuellement pas installé. Vous pouvez l'installer en t yping:sudo apt-get install libmysqlclient-dev
anders
1
devrait ajouter cette réponse au document officiel de
django
1
Je pense que je suis la personne unique avec cette erreur «La commande python setup.py egg_info a échoué avec le code d'erreur 1» après l'exécution «pip install MySQL-python»
RicardoGonzales
62

Sous Ubuntu, je devais faire:

sudo apt-get install python-mysqldb
kottin
la source
8
Il exécute OS X, pas Ubuntu
Facundo Casco
8
De plus, cela ne le mettrait pas dans le virtualenv
Twirrim
58

Ajoutant à d'autres réponses, les éléments suivants m'ont aidé à terminer l'installation de mysql-python:

virtualenv, mysql-python, pip: quelqu'un sait comment?

Sur Ubuntu ...

apt-get install libmysqlclient-dev
apt-get install python-dev
pip install mysql-python

N'oubliez pas d'ajouter «sudo» au début des commandes si vous ne disposez pas des autorisations appropriées.

MrOodles
la source
1
la clé est apt-get install python-dev. Je ne sais pas pourquoi j'installe une version de développement de python 2 ans plus tard, mais cela fonctionne à partir d'aujourd'hui en utilisant python 2.7.3. Seulement 3 heures perdues.
user798719
23

Essayez ceci les commandes ci-dessous. Ils travaillent pour moi:

brew install mysql-connector-c 
pip install MySQL-python
DàChún
la source
Cette méthode a résolu mon problème. Toutes les autres suggestions avant de me donner un message d'erreur deCommand "python setup.py egg_info" failed with error code 1 in /private/var/folders/r8/c_tscq492sn641w5vtvqcvkw0000gp/T/pip-build-JYY1du/MySQL-python
LearnAWK
2
Merci beaucoup, essayez tout ce qui précède. Aucun n'a travaillé sur OSX 10.11, attendez-vous à cela
Paullo
1
@LearnAWK cela ne fonctionne pas. J'obtiens toujours l'erreur La commande "python setup.py egg_info" a échoué avec le code d'erreur 1 dans / private / var / folder / 3m / 97mbsh5x2bnghhk55130bh_h0000gn / T / pip-build-FFU1vL / MySQL-python /
Stony
19

mysql_configdoit être sur le chemin. Sur Mac, faites

export PATH=$PATH:/usr/local/mysql/bin/
pip install MySQL-python
toucan
la source
4
J'ai essayé ceci et j'obtiens toujours la même erreur: 'raise ImproperlyConfigured ("Erreur lors du chargement du module MySQLdb:% s"% e) django.core.exceptions.ImproperlyConfigured: Erreur lors du chargement du module MySQLdb: Aucun module nommé MySQLdb'
filistea
14
pip install mysql-python

a déclenché une erreur:

EnvironmentError: mysql_config introuvable

sudo apt-get install python-mysqldb

résolu le problème.

Soli
la source
11

Comment je l'ai fait fonctionner:

virtualenv -p python3.5 env/test

Après avoir acheté mon env:

pip install pymysql
pip install django

Ensuite, j'ai exécuté le startproject et à l'intérieur du manage.py, j'ai ajouté ceci:

+ try:
+     import pymysql
+     pymysql.install_as_MySQLdb()
+ except:
+     pass

En outre, ces paramètres internes ont été mis à jour:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'foobar_db',
        'USER': 'foobaruser',
        'PASSWORD': 'foobarpwd',
    }
}

J'ai également configparser==3.5.0installé dans mon virtualenv, je ne sais pas si cela était nécessaire ou non ...

J'espère que ça aide,

Douglas
la source
8

Les éléments suivants ont parfaitement fonctionné pour moi, exécutant Ubuntu 13.10 64 bits:

sudo apt-get install libmysqlclient-dev
sudo apt-get install python-dev

Maintenant, accédez à votre virtualenv (tel que le dossier env) et exécutez ce qui suit:

sudo ./bin/pip install mysql-python

J'ai trouvé la solution dans une question séparée et je la cite ci-dessous:

Si vous avez créé virtualenv avec le commutateur --no-site-packages (par défaut), les ajouts installés à l'échelle du système tels que MySQLdb ne sont pas inclus dans les packages d'environnement virtuel.

Vous devez installer MySQLdb avec la commande pip installée avec virtualenv. Vous pouvez soit activer virtualenv avec le script bin / activate, soit utiliser bin / pip depuis virtualenv pour installer également la bibliothèque MySQLdb localement.

Vous pouvez également créer un nouveau virtualenv avec les packages de site système inclus à l'aide du commutateur --system-site-package.

Je pense que cela devrait également fonctionner avec OSX. Le seul problème serait d'obtenir une commande équivalente pour l'installation libmysqlclient-devet python-devcomme ils sont nécessaires pour compiler, mysql-pythonje suppose.

J'espère que cela t'aides.

Rafay
la source
2
Merci! Vous devez installer MySQLdb avec la commande pip installée avec virtualenv. - Aide
dobs
Merci. sudo ./bin/pip install mysql-pythonest très utile!
theblackpearl
8

Essayez ceci: cela a résolu le problème pour moi.

pip installe MySQL-python

errakeshpd
la source
2
Merci. Cela a fonctionné pour résoudre le problème pour moi avec heroku et cleardb: ignite sur django 1.7.1.
Ryan Walton
7

Ce problème est le résultat d'une installation incomplète / incorrecte de l'adaptateur MySQL pour Python. Plus précisément, j'ai dû modifier le chemin d'accès au fichier mysql_config pour pointer vers / usr / local / mysql / bin / mysql_config - discuté plus en détail dans cet article: http://dakrauth.com/blog/entry/python-and- django-setup-mac-os-x-leopard /

Joe
la source
7

sudo apt-get install python-mysqldb fonctionne parfaitement dans ubuntu

pip install mysql-pythondéclenche une erreur d'environnement

Maurice Elagu
la source
5

Cela a fonctionné pour Red Hat Enterprise Linux Server version 6.4

sudo yum install mysql-devel
sudo yum install python-devel
pip install mysql-python
Rohit Alekar
la source
CentOS 7, option 1 yum install MySQL-python:; L' option 2 (si l'on utilise virtualenv): yum install mysql-devel; venv/bin/pip install MySQL-python.
hudolejev
4

Vous pouvez installer en tant que pip install mysqlclient

Md Sirajus Salayhin
la source
cela l'a trié pour moi, car je pense que c'est la version à utiliser pour Python 3
A Star
3

J'ai effectué la mise à niveau vers OSX Mavericks et Pycharm 3 et j'ai commencé à obtenir cette erreur, j'ai utilisé pip et une installation facile et j'ai obtenu l'erreur:

la commande «/ usr / bin / clang» a échoué avec l'état de sortie 1.

J'ai donc besoin de mettre à jour vers Xcode 5 et j'ai essayé à nouveau d'installer en utilisant pip.

pip install mysql-python

Cela résout tous les problèmes.

unixeO
la source
2

L'erreur soulevée ici concerne l'importation du module python. Cela peut être résolu en ajoutant le dossier python site-packages à la variable d'environnement $ PYTHONPATH sous OS X. Nous pouvons donc ajouter la commande suivante au fichier .bash_profile:

export PYTHONPATH="$PYTHONPATH:/usr/local/lib/pythonx.x/site-packages/"

* remplacez xx par la version python que vous utilisez

Arun Reddy
la source
J'ai essayé ceci: stackoverflow.com/questions/25459386/… mais j'ai échoué, cela m'a sauvé .. (Y)
Kamaldeep singh Bhatia
2

Si vous utilisez python3, essayez ceci (Mon OS est Ubuntu 16.04):

sudo apt-get install python3-mysqldb
Dillion Wang
la source
2

pipn'a pas fonctionné pour moi sur le système Windows 8 64 bits. easy_install mysql-pythontravaille pour moi. Vous pouvez utiliser easy_installpour éviter de créer des binaires sur Windows si pip ne fonctionne pas.

kta
la source
1

J'ai eu le même problème sur OSX 10.6.6. Mais juste un simple easy_install mysql-pythonterminal n'a pas résolu le problème car un autre hoquet a suivi:

error: command 'gcc-4.2' failed with exit status 1.

Apparemment, ce problème survient après la mise à niveau de XCode3 (qui est nativement livré avec OSX 10.6) vers XCode4. Cette nouvelle version supprime la prise en charge de la construction de l'arc ppc. Si c'est le même cas, essayez de faire comme suit avanteasy_install mysql-python

sudo bash
export ARCHFLAGS='-arch i386 -arch x86_64'
rm -r build
python setup.py build
python setup.py install

Un grand merci à Ned Deily pour cette solution. Vérifiez ici

jerrymouse
la source
0

Pour moi, le problème a été résolu en réinstallant simplement mysql-python

pip uninstall mysql-python
pip install mysql-python
Özer S.
la source
0

Installer les outils de ligne de commande fonctionne pour moi:

xcode-select --install
Giovanni Benussi
la source
0

J'ai surmonté le même problème en installant la MySQL-pythonbibliothèque à l'aide de pip . Vous pouvez voir le message affiché sur ma console lorsque j'ai modifié mes paramètres de base de données pour la première fois dans settings.py et exécuté la commande makemigrations (la solution suit le message ci-dessous, voyez juste).

  (vir_env) admins-MacBook-Pro-3:src admin$ python manage.py makemigrations
Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line
    utility.execute()
  File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/core/management/__init__.py", line 312, in execute
    django.setup()
  File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/__init__.py", line 18, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/apps/registry.py", line 108, in populate
    app_config.import_models(all_models)
  File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/apps/config.py", line 198, in import_models
    self.models_module = import_module(models_module_name)
  File "/usr/local/Cellar/python/2.7.12_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/contrib/auth/models.py", line 41, in <module>
    class Permission(models.Model):
  File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/db/models/base.py", line 139, in __new__
    new_class.add_to_class('_meta', Options(meta, **kwargs))
  File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/db/models/base.py", line 324, in add_to_class
    value.contribute_to_class(cls, name)
  File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/db/models/options.py", line 250, in contribute_to_class
    self.db_table = truncate_name(self.db_table, connection.ops.max_name_length())
  File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/db/__init__.py", line 36, in __getattr__
    return getattr(connections[DEFAULT_DB_ALIAS], item)
  File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/db/utils.py", line 240, in __getitem__
    backend = load_backend(db['ENGINE'])
  File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/db/utils.py", line 111, in load_backend
    return import_module('%s.base' % backend_name)
  File "/usr/local/Cellar/python/2.7.12_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 27, in <module>
    raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

Enfin, j'ai surmonté ce problème comme suit:

(vir_env) admins-MacBook-Pro-3:src admin$ pip install MySQLdb
Collecting MySQLdb
  Could not find a version that satisfies the requirement MySQLdb (from versions: )
No matching distribution found for MySQLdb
(vir_env) admins-MacBook-Pro-3:src admin$ pip install MySQL-python
Collecting MySQL-python
  Downloading MySQL-python-1.2.5.zip (108kB)
    100% |████████████████████████████████| 112kB 364kB/s 
Building wheels for collected packages: MySQL-python
  Running setup.py bdist_wheel for MySQL-python ... done
  Stored in directory: /Users/admin/Library/Caches/pip/wheels/38/a3/89/ec87e092cfb38450fc91a62562055231deb0049a029054dc62
Successfully built MySQL-python
Installing collected packages: MySQL-python
Successfully installed MySQL-python-1.2.5
(vir_env) admins-MacBook-Pro-3:src admin$ python manage.py makemigrations
No changes detected
(vir_env) admins-MacBook-Pro-3:src admin$ python manage.py migrate
Operations to perform:
  Synchronize unmigrated apps: staticfiles, rest_framework, messages, crispy_forms
  Apply all migrations: admin, contenttypes, sessions, auth, PyApp
Synchronizing apps without migrations:
  Creating tables...
    Running deferred SQL...
  Installing custom SQL...
Running migrations:
  Rendering model states... DONE
  Applying PyApp.0001_initial... OK
  Applying PyApp.0002_auto_20170310_0936... OK
  Applying PyApp.0003_auto_20170310_0953... OK
  Applying PyApp.0004_auto_20170310_0954... OK
  Applying PyApp.0005_auto_20170311_0619... OK
  Applying PyApp.0006_auto_20170311_0622... OK
  Applying PyApp.0007_loraevksensor... OK
  Applying PyApp.0008_auto_20170315_0752... OK
  Applying PyApp.0009_auto_20170315_0753... OK
  Applying PyApp.0010_auto_20170315_0806... OK
  Applying PyApp.0011_auto_20170315_0814... OK
  Applying PyApp.0012_auto_20170315_0820... OK
  Applying PyApp.0013_auto_20170315_0822... OK
  Applying PyApp.0014_auto_20170315_0907... OK
  Applying PyApp.0015_auto_20170315_1041... OK
  Applying PyApp.0016_auto_20170315_1355... OK
  Applying PyApp.0017_auto_20170315_1401... OK
  Applying PyApp.0018_auto_20170331_1348... OK
  Applying PyApp.0019_auto_20170331_1349... OK
  Applying PyApp.0020_auto_20170331_1350... OK
  Applying PyApp.0021_auto_20170331_1458... OK
  Applying PyApp.0022_delete_postoffice... OK
  Applying PyApp.0023_posoffice... OK
  Applying PyApp.0024_auto_20170331_1504... OK
  Applying PyApp.0025_auto_20170331_1511... OK
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying sessions.0001_initial... OK
(vir_env) admins-MacBook-Pro-3:src admin$ 
hygull
la source
0

Exécutez cette commande

sudo pip install mysql-python;

vous pouvez maintenant exécuter votre commande.

python manage.py startapp filename;
Siddharth Shukla
la source
0

J'ai rencontré des situations similaires comme la vôtre que j'utilise python3.7 et django 2.1 dans virtualenv sur mac osx. Essayez d'exécuter la commande:

pip install mysql-python
pip install pymysql

Et modifiez le __init__.pyfichier dans votre dossier de projet et ajoutez ce qui suit:

import pymysql

pymysql.install_as_MySQLdb()

Exécutez ensuite: python3 manage.py runserver ou python manage.py runserver

Fred
la source