Come usare MySQLdb con Python e Django in OSX 10.6?


259

Questo è un problema molto discusso per gli utenti di OSX 10.6, ma non sono stato in grado di trovare una soluzione che funzioni. Ecco la mia configurazione:

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

Creo un virtualenvwrapper con --no-site-pacchetti, quindi ho installato Django. Quando attivo virtualenv ed eseguo python manage.py syncdb, ottengo questo errore:

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

Ho anche installato l' adattatore MySQL per Python , ma inutilmente (forse l'ho installato in modo errato?).

Qualcuno ha affrontato questo prima?


5
Questo problema era il risultato di un'installazione incompleta / errata dell'adattatore MySQL per Python. In particolare, ho dovuto modificare il percorso del file mysql_config per puntare a / usr / local / mysql / bin / mysql_config - discusso in maggior dettaglio in questo articolo: dakrauth.com/blog/entry/…
Joe

basta fare questo ---------- apt-get install python-mysqldb
shadow0359

pip install mysqlha funzionato per me!
Ivan Carrasco Quiroz,

Risposte:


330

Ho avuto lo stesso errore e l' pip install MySQL-pythonho risolto per me.

Installazioni alternative:

  • Se non hai pip, easy_install MySQL-pythondovrebbe funzionare.
  • Se il tuo python è gestito da un sistema di packaging, potresti dover usare quel sistema (ad es. sudo apt-get install ...)

Di seguito, Soli nota che se si riceve il seguente errore:

EnvironmentError: mysql_config not found

... quindi hai un ulteriore problema di dipendenza del sistema. Risolvere questo varierà da sistema a sistema, ma per i sistemi derivati ​​da Debian:

sudo apt-get install python-mysqldb


2
sì, ho usato Synaptic Package Manager per cercare mysql-python e installarlo e ha funzionato benissimo. Grazie.
Tomasz Iniewicz,

6
Sotto Fedora 17: sudo yum install MySQL-python:)
g19fanatic il

20
$ mysql_configIl programma "mysql_config" non è attualmente installato. Puoi installarlo scrivendo:sudo apt-get install libmysqlclient-dev
anders

1
dovrebbe aggiungere questa risposta al documento ufficiale del django
Siwei Shen 申思维

1
Penso di essere la persona unica con questo errore 'Comando python setup.py egg_info non riuscito con codice di errore 1' dopo l'esecuzione 'pip install MySQL-python'
RicardoGonzales

62

Con Ubuntu ho dovuto fare:

sudo apt-get install python-mysqldb

8
Sta eseguendo OS X, non Ubuntu
Facundo Casco

8
Inoltre, ciò non lo metterebbe nel virtualenv
Twirrim,

58

Aggiungendo ad altre risposte, quanto segue mi ha aiutato a completare l'installazione mysql-python:

virtualenv, mysql-python, pip: qualcuno sa come?

Su Ubuntu ...

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

Non dimenticare di aggiungere "sudo" all'inizio dei comandi se non si dispone delle autorizzazioni appropriate.


1
la chiave è apt-get install python-dev. Non ho idea del motivo per cui sto installando una versione di sviluppo di Python 2 anni dopo, ma oggi funziona con Python 2.7.3. Solo 3 ore sprecate.
user798719

23

Prova questo i seguenti comandi. Funzionano per me:

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

Questo metodo ha risolto il mio problema. Tutti gli altri suggerimenti prima di darmi un messaggio di errore diCommand "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
Grazie, prova tutto quanto sopra indicato. Nessuno ha funzionato su OSX 10.11 se lo aspetta
Paullo

1
@LearnAWK non funziona. Ancora ottengo l'errore di comando "python setup.py egg_info" non riuscita con il codice di errore 1 in / private / var / cartelle / 3m / 97mbsh5x2bnghhk55130bh_h0000gn / T / pip-build-FFU1vL / MySQL-python /
Stony

19

mysql_configdeve essere sul percorso. Su Mac, fallo

export PATH=$PATH:/usr/local/mysql/bin/
pip install MySQL-python

4
Ho provato questo e continuo a ottenere lo stesso errore: 'raise ImproperlyConfigured ("Errore nel caricamento del modulo MySQLdb:% s"% e) django.core.exceptions.ImproperlyConfigured: errore nel caricamento del modulo MySQLdb: nessun modulo chiamato MySQLdb'
filistea

14
pip install mysql-python

ha generato un errore:

EnvironmentError: mysql_config non trovato

sudo apt-get install python-mysqldb

risolto il problema.


11

Come l'ho fatto funzionare:

virtualenv -p python3.5 env/test

Dopo aver acquistato il mio env:

pip install pymysql
pip install django

Quindi, ho avviato startproject e all'interno di manage.py ho aggiunto questo:

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

Inoltre, aggiornato questo all'interno delle impostazioni:

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

Ho anche configparser==3.5.0installato nel mio virtualenv, non sono sicuro che fosse necessario o no ...

Spero che sia d'aiuto,


8

Il seguente ha funzionato perfettamente per me, eseguendo Ubuntu 13.10 a 64 bit:

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

Ora vai al tuo virtualenv (come la cartella env) ed esegui quanto segue:

sudo ./bin/pip install mysql-python

In realtà ho trovato la soluzione in una domanda separata e la sto citando di seguito:

Se hai creato virtualenv con l'opzione --no-site-pacchetti (impostazione predefinita), le aggiunte installate a livello di sistema come MySQLdb non sono incluse nei pacchetti dell'ambiente virtuale.

Devi installare MySQLdb con il comando pip installato con virtualenv. Attiva virtualenv con lo script bin / activ o usa bin / pip dall'interno di virtualenv per installare la libreria MySQLdb anche localmente.

In alternativa, creare un nuovo virtualenv con i pacchetti del sito di sistema inclusi utilizzando l'opzione --system-site-package.

Penso che questo dovrebbe funzionare anche con OSX. L'unico problema sarebbe ottenere un comando equivalente per l'installazione libmysqlclient-deve python-devpoiché sono necessari per la compilazione mysql-pythoncredo.

Spero che questo ti aiuti.


2
Grazie! Devi installare MySQLdb con il comando pip installato con virtualenv. - Aiuta
Dobs

Grazie. sudo ./bin/pip install mysql-pythonè molto utile!
theblackpearl,

8

Prova questo: questo ha risolto il problema per me.

pip installa MySQL-python


2
Grazie. Questo ha funzionato per risolvere il problema per me con heroku e cleardb: ignite su django 1.7.1.
Ryan Walton,


7

sudo apt-get install python-mysqldb funziona perfettamente in Ubuntu

pip install mysql-pythongenera un errore di ambiente


5

Questo ha funzionato con Red Hat Enterprise Linux Server versione 6.4

sudo yum install mysql-devel
sudo yum install python-devel
pip install mysql-python

CentOS 7, opzione 1 yum install MySQL-python:; l'opzione 2 (se si utilizza virtualenv): yum install mysql-devel; venv/bin/pip install MySQL-python.
hudolejev,

4

È possibile installare come pip install mysqlclient


questo ha risolto il problema per me, poiché credo che questa sia la versione da utilizzare per Python 3
A Star il

3

Ho effettuato l'aggiornamento a OSX Mavericks e Pycharm 3 e ho iniziato a ricevere questo errore, ho usato pip e installazione facile e ho ottenuto l'errore:

comando '/ usr / bin / clang' non riuscito con stato di uscita 1.

Quindi devo aggiornare a Xcode 5 e riprovare a installare usando pip.

pip install mysql-python

Ciò risolve tutti i problemi.


2

L'errore sollevato qui è durante l'importazione del modulo Python. Questo può essere risolto aggiungendo la cartella python site-pacchetti alla variabile di ambiente $ PYTHONPATH su OS X. Quindi possiamo aggiungere il seguente comando al file .bash_profile:

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

* Sostituisci xx con la versione di Python che stai utilizzando


Ho provato questo: stackoverflow.com/questions/25459386/… ma fallito, questo mi ha salvato .. (Y)
Kamaldeep singh Bhatia

2

Se stai usando python3, prova questo (Il mio sistema operativo è Ubuntu 16.04):

sudo apt-get install python3-mysqldb

2

pipnon ha funzionato per me sul sistema Windows 8 a 64 bit. easy_install mysql-pythonper me va bene. È possibile utilizzare easy_installper evitare la creazione di file binari su Windows se pip non funziona.


1

Ho avuto lo stesso problema su OSX 10.6.6. Ma solo un semplice easy_install mysql-pythonterminale non lo ha risolto in seguito a un altro singhiozzo:

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

Apparentemente, questo problema si presenta dopo l'aggiornamento da XCode3 (che viene fornito nativamente con OSX 10.6) a XCode4. Questa versione più recente rimuove il supporto per la creazione dell'arco ppc. Se è lo stesso caso, prova a fare quanto segue primaeasy_install mysql-python

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

Mille grazie a Ned Deily per questa soluzione. Controlla qui


0

Per me il problema è stato risolto semplicemente reinstallando mysql-python

pip uninstall mysql-python
pip install mysql-python


0

Ho superato lo stesso problema installando la MySQL-pythonlibreria usando pip . Puoi vedere il messaggio visualizzato sulla mia console quando ho modificato per la prima volta le impostazioni del mio database in settings.py ed eseguito il comando makemigrations (La soluzione sta seguendo il messaggio seguente, vedi solo).

  (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

Alla fine ho superato questo problema come segue:

(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$ 

0

Esegui questo comando

sudo pip install mysql-python;

ora puoi eseguire il tuo comando.

python manage.py startapp filename;

0

Ho riscontrato situazioni simili alla tua che sto usando python3.7 e django 2.1 in virtualenv su mac osx. Prova a eseguire il comando:

pip install mysql-python
pip install pymysql

E modifica il __init__.pyfile nella cartella del progetto e aggiungi quanto segue:

import pymysql

pymysql.install_as_MySQLdb()

Quindi eseguire: python3 manage.py runserver o python manage.py runserver

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.