Wie verwende ich MySQLdb mit Python und Django in OSX 10.6?

259

Dies ist ein viel diskutiertes Problem für OSX 10.6-Benutzer, aber ich konnte keine funktionierende Lösung finden. Hier ist mein Setup:

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

Ich erstelle einen virtuellen Envwrapper mit --no-site-packages und installiere dann Django. Wenn ich die virtuelle Umgebung aktiviere und python manage.py syncdb ausführe, wird folgende Fehlermeldung angezeigt:

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

Ich habe auch den MySQL für Python- Adapter installiert , aber ohne Erfolg (vielleicht habe ich ihn nicht ordnungsgemäß installiert?).

Hat sich schon jemand damit befasst?

Joe
quelle
5
Dieses Problem war das Ergebnis einer unvollständigen / fehlerhaften Installation des MySQL for Python-Adapters. Insbesondere hatte ich den Pfad zur Datei mysql_config zu Punkt auf / usr / local / mysql / sind / mysql_config zu bearbeiten - in größerem Detail in diesem Artikel beschrieben: dakrauth.com/blog/entry/...
Joe
mach das einfach ---------- apt-get install python-mysqldb
shadow0359
pip install mysqlhat für mich gearbeitet!
Ivan Carrasco Quiroz

Antworten:

330

Ich hatte den gleichen Fehler und pip install MySQL-pythonlöste ihn für mich.

Alternative Installationen:

  • Wenn Sie keinen Pip haben, easy_install MySQL-pythonsollte funktionieren.
  • Wenn Ihr Python durch ein Verpackungssystem verwaltet wird, können Sie dieses System verwenden müssen (zB sudo apt-get install ...)

Unten stellt Soli fest, dass, wenn Sie den folgenden Fehler erhalten:

EnvironmentError: mysql_config not found

... dann haben Sie ein weiteres Problem mit der Systemabhängigkeit. Die Lösung dieses Problems variiert von System zu System, jedoch für von Debian abgeleitete Systeme:

sudo apt-get install python-mysqldb

Clint
quelle
2
Ja, ich habe Synaptic Package Manager verwendet, um nach MySQL-Python zu suchen und zu installieren, und es hat großartig funktioniert. Vielen Dank.
Tomasz Iniewicz
6
Unter Fedora 17: sudo yum install MySQL-python:)
g19fanatic
20
$ mysql_configDas Programm 'mysql_config' ist derzeit nicht installiert. Sie können es installieren, indem Sie Folgendes eingeben:sudo apt-get install libmysqlclient-dev
anders
1
sollte diese Antwort zum offiziellen Django-Dokument hinzufügen
Siwei Shen 申思维
1
Ich denke, ich bin die einzigartige Person mit diesem Fehler 'Befehl python setup.pygg_info fehlgeschlagen mit Fehlercode 1' nach dem Ausführen 'pip install MySQL-python'
RicardoGonzales
62

Unter Ubuntu musste ich Folgendes tun:

sudo apt-get install python-mysqldb
Kottin
quelle
8
Er verwendet OS X, nicht Ubuntu
Facundo Casco
8
Auch das würde es nicht in die virtuelle
Umgebung
58

Folgendes hat mir geholfen, die Installation von mysql-python abzuschließen:

virtualenv, mysql-python, pip: weiß jemand wie?

Auf Ubuntu ...

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

Vergessen Sie nicht, 'sudo' am Anfang von Befehlen hinzuzufügen, wenn Sie nicht über die richtigen Berechtigungen verfügen.

MrOodles
quelle
1
Der Schlüssel ist apt-get install python-dev. Keine Ahnung, warum ich 2 Jahre später eine Entwicklungsversion von Python installiere, aber dies funktioniert ab heute mit Python 2.7.3. Nur 3 Stunden verschwendet.
user798719
23

Versuchen Sie dies mit den folgenden Befehlen. Sie arbeiten für mich:

brew install mysql-connector-c 
pip install MySQL-python
DàChún
quelle
Diese Methode hat mein Problem gelöst. Alle anderen Vorschläge vor geben mir eine Fehlermeldung vonCommand "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
Vielen Dank. Versuchen Sie alle oben genannten. Keiner hat unter OSX 10.11 gearbeitet. Erwarten Sie dies
Paullo
1
@LearnAWK es funktioniert nicht. Ich erhalte immer noch den Fehler Befehl "python setup.py egg_info" mit Fehlercode 1 in / private / var / folders / 3m / 97mbsh5x2bnghhk55130bh_h0000gn / T / pip-build-FFU1vL / MySQL-python /
Stony
19

mysql_configmuss auf dem Weg sein. Auf dem Mac tun

export PATH=$PATH:/usr/local/mysql/bin/
pip install MySQL-python
Tukan
quelle
4
Ich habe dies versucht und erhalte immer noch den gleichen Fehler: 'Erhöhen Sie ImproperlyConfigured ("Fehler beim Laden des MySQLdb-Moduls:% s"% e) django.core.exceptions.ImproperlyConfigured: Fehler beim Laden des MySQLdb-Moduls: Kein Modul namens MySQLdb'
Filistea
14
pip install mysql-python

hat einen Fehler ausgelöst:

EnvironmentError: mysql_config nicht gefunden

sudo apt-get install python-mysqldb

Das Problem wurde behoben.

Soli
quelle
11

Wie ich es zum Laufen gebracht habe:

virtualenv -p python3.5 env/test

Nach der Beschaffung meiner Umgebung:

pip install pymysql
pip install django

Dann habe ich das Startprojekt ausgeführt und in der Datei "manage.py" Folgendes hinzugefügt:

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

Außerdem wurden diese Einstellungen aktualisiert:

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

ich habe auch configparser==3.5.0 in meiner virtuellen Umgebung installiert, nicht sicher, ob das erforderlich war oder nicht ...

Ich hoffe es hilft,

Douglas
quelle
8

Folgendes funktionierte perfekt mit Ubuntu 13.10 64-Bit:

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

Navigieren Sie nun zu Ihrer virtuellen Umgebung (z. B. dem Ordner env) und führen Sie Folgendes aus:

sudo ./bin/pip install mysql-python

Ich habe die Lösung tatsächlich in einer separaten Frage gefunden und zitiere sie unten:

Wenn Sie die virtuelle Umgebung mit dem Schalter --no-site-packages (Standardeinstellung) erstellt haben, sind systemweit installierte Ergänzungen wie MySQLdb nicht in den Paketen für die virtuelle Umgebung enthalten.

Sie müssen MySQLdb mit dem Befehl pip installieren, der mit virtualenv installiert ist. Aktivieren Sie entweder die virtuelle Umgebung mit dem Skript bin / enable oder verwenden Sie bin / pip aus der virtuellen Umgebung heraus, um die MySQLdb-Bibliothek auch lokal zu installieren.

Alternativ können Sie mithilfe des Schalters --system-site-package eine neue virtuelle Umgebung mit System-Site-Paketen erstellen.

Ich denke, das sollte auch mit OSX funktionieren. Das einzige Problem wäre, einen äquivalenten Befehl für die Installation libmysqlclient-devund python-devfür die Kompilierung zu erhalten mysql-python denke ich.

Hoffe das hilft.

Rafay
quelle
2
Vielen Dank! Sie müssen MySQLdb mit dem Befehl pip installieren, der mit virtualenv installiert ist. - Hilft
dobs
Vielen Dank. sudo ./bin/pip install mysql-pythonist sehr hilfreich!
Theblackpearl
8

Versuchen Sie Folgendes: Dies hat das Problem für mich gelöst.

pip installiere MySQL-Python

errakeshpd
quelle
2
Vielen Dank. Dies hat das Problem mit Heroku und Cleardb: Ignite auf Django 1.7.1 behoben.
Ryan Walton
7

Dieses Problem war das Ergebnis einer unvollständigen / fehlerhaften Installation des MySQL for Python-Adapters. Insbesondere musste ich den Pfad zur Datei mysql_config bearbeiten, um auf / usr / local / mysql / bin / mysql_config zu verweisen - dies wird in diesem Artikel ausführlicher beschrieben: http://dakrauth.com/blog/entry/python-and- django-setup-mac-os-x-leopard /

Joe
quelle
7

sudo apt-get install python-mysqldb funktioniert perfekt in Ubuntu

pip install mysql-pythonlöst einen Umgebungsfehler aus

Maurice Elagu
quelle
5

Dies funktionierte für Red Hat Enterprise Linux Server Version 6.4

sudo yum install mysql-devel
sudo yum install python-devel
pip install mysql-python
Rohit Alekar
quelle
CentOS 7, Option 1 : yum install MySQL-python; Option 2 (bei Verwendung von virtualenv) : yum install mysql-devel; venv/bin/pip install MySQL-python.
Hudolejev
4

Sie können als installieren pip install mysqlclient

Md Sirajus Salayhin
quelle
Dies hat es für mich sortiert, da ich glaube, dass dies die Version ist, die für Python 3
A Star
3

Ich habe das Upgrade auf OSX Mavericks und Pycharm 3 durchgeführt und bekomme diesen Fehler. Ich habe pip und easy install verwendet und den Fehler erhalten:

Befehl '/ usr / bin / clang' mit Exit-Status 1 fehlgeschlagen.

Also muss ich auf Xcode 5 aktualisieren und erneut versuchen, mit pip zu installieren.

pip install mysql-python

Das behebt alle Probleme.

unixeO
quelle
2

Der hier aufgetretene Fehler besteht beim Importieren des Python-Moduls. Dies kann durch Hinzufügen des Ordners python site-packages zur Umgebungsvariablen $ PYTHONPATH unter OS X behoben werden. Daher können wir der Datei .bash_profile den folgenden Befehl hinzufügen:

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

* Ersetzen Sie xx durch die von Ihnen verwendete Python-Version

Arun Reddy
quelle
Ich habe dies versucht: stackoverflow.com/questions/25459386/… aber fehlgeschlagen, das hat mich gerettet .. (Y)
Kamaldeep singh Bhatia
2

Wenn Sie Python3 verwenden, versuchen Sie Folgendes (Mein Betriebssystem ist Ubuntu 16.04):

sudo apt-get install python3-mysqldb
Dillion Wang
quelle
2

piphat bei mir unter Windows 8 64-Bit-System nicht funktioniert. easy_install mysql-pythonfunktioniert bei mir. Sie können verwenden easy_install, um das Erstellen von Binärdateien unter Windows zu vermeiden, wenn pip nicht funktioniert.

kta
quelle
1

Ich hatte das gleiche Problem unter OSX 10.6.6. Aber nur eine einfacheeasy_install mysql-python Terminal löste es nicht, als ein weiterer Schluckauf folgte:

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

Anscheinend tritt dieses Problem nach dem Upgrade von XCode3 (das nativ mit OSX 10.6 geliefert wird) auf XCode4 auf. Diese neuere Version entfernt die Unterstützung für das Erstellen von ppc arch. Wenn dies der gleiche Fall ist, versuchen Sie es wie folgteasy_install mysql-python

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

Vielen Dank an Ned Deily für diese Lösung. Überprüfe hier

Jerrymouse
quelle
0

Für mich wurde das Problem durch einfaches Neuinstallieren von mysql-python gelöst

pip uninstall mysql-python
pip install mysql-python
Özer S.
quelle
0

Befehlszeilentools installieren Funktioniert für mich:

xcode-select --install
Giovanni Benussi
quelle
0

Ich habe das gleiche Problem überwunden, indem ich die MySQL-pythonBibliothek mit pip installiert habe . Sie können die Meldung auf meiner Konsole sehen, als ich meine Datenbankeinstellungen zum ersten Mal in settings.py geändert und den Befehl makemigrations ausgeführt habe (Die Lösung folgt der folgenden Meldung, sehen Sie sich das an).

  (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

Schließlich habe ich dieses Problem wie folgt überwunden:

(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
quelle
0

Führen Sie diesen Befehl aus

sudo pip install mysql-python;

Jetzt können Sie Ihren Befehl ausführen.

python manage.py startapp filename;
Siddharth Shukla
quelle
0

Ich bin auf ähnliche Situationen wie Ihre gestoßen, in denen ich Python3.7 und Django 2.1 in virtualenv auf Mac OSX verwende. Versuchen Sie, den Befehl auszuführen:

pip install mysql-python
pip install pymysql

Bearbeiten Sie die __init__.pyDatei in Ihrem Projektordner und fügen Sie Folgendes hinzu:

import pymysql

pymysql.install_as_MySQLdb()

Dann laufen: python3 manage.py runserver oder python manage.py runserver

Fred
quelle