¿Cómo usar MySQLdb con Python y Django en OSX 10.6?

259

Este es un tema muy discutido para los usuarios de OSX 10.6, pero no he podido encontrar una solución que funcione. Aquí está mi configuración:

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

Creé un virtualenvwrapper con --no-site-packages, luego instalé Django. Cuando activo el virtualenv y ejecuto python manage.py syncdb, aparece este error:

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

También instalé el adaptador MySQL para Python , pero fue en vano (¿tal vez lo instalé incorrectamente?).

¿Alguien ha tratado esto antes?

Joe
fuente
55
Este problema fue el resultado de una instalación incompleta / incorrecta del adaptador MySQL para Python. Específicamente, tuve que editar la ruta al archivo mysql_config para apuntar a / usr / local / mysql / bin / mysql_config - discutido en mayor detalle en este artículo: dakrauth.com/blog/entry/…
Joe
solo haz esto ---------- apt-get install python-mysqldb
shadow0359
pip install mysql¡trabajó para mi!
Ivan Carrasco Quiroz

Respuestas:

330

Tuve el mismo error y lo pip install MySQL-pythonresolvió por mí.

Instalaciones alternativas:

  • Si no tienes pip, easy_install MySQL-pythondebería funcionar.
  • Si su python es administrado por un sistema de empaquetado, es posible que deba usar ese sistema (p sudo apt-get install .... Ej. )

A continuación, Soli señala que si recibe el siguiente error:

EnvironmentError: mysql_config not found

... entonces tienes otro problema de dependencia del sistema. Resolver esto variará de un sistema a otro, pero para los sistemas derivados de Debian:

sudo apt-get install python-mysqldb

Clint
fuente
2
sí, utilicé Synaptic Package Manager para buscar mysql-python e instalarlo y funcionó muy bien. Gracias.
Tomasz Iniewicz
66
Bajo Fedora 17: sudo yum install MySQL-python:)
g19fanatic
20
$ mysql_configEl programa 'mysql_config' actualmente no está instalado. Puede instalarlo escribiendo:sudo apt-get install libmysqlclient-dev
anders
1
debería agregar esta respuesta al documento oficial de django
Siwei Shen 申思维
1
Creo que soy la persona única con este error 'El comando python setup.py egg_info falló con el código de error 1' después de ejecutar 'pip install MySQL-python'
RicardoGonzales
62

Ejecutando Ubuntu, tuve que hacer:

sudo apt-get install python-mysqldb
kottin
fuente
8
Está ejecutando OS X, no Ubuntu
Facundo Casco
8
Además, eso no lo pondría en el virtualenv
Twirrim
58

Además de otras respuestas, lo siguiente me ayudó a terminar la instalación de mysql-python:

virtualenv, mysql-python, pip: ¿alguien sabe cómo?

En Ubuntu ...

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

No olvide agregar 'sudo' al comienzo de los comandos si no tiene los permisos adecuados.

MrOodles
fuente
1
la clave es apt-get install python-dev. No tengo idea de por qué estoy instalando una versión de desarrollo de python 2 años después, pero esto funciona a partir de hoy usando python 2.7.3. Solo 3 horas desperdiciadas.
user798719
23

Prueba esto con los comandos a continuación. Ellos trabajan para mi:

brew install mysql-connector-c 
pip install MySQL-python
DàChún
fuente
Este método resolvió mi problema. Todas las demás sugerencias anteriores me dan un mensaje de error 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
Muchas gracias, intente todo lo mencionado anteriormente. Ninguno funcionó en OSX 10.11 esperar esto
Paullo
1
@LearnAWK no funciona. Todavía recibo el error El comando "python setup.py egg_info" falló con el código de error 1 en / private / var / folder / 3m / 97mbsh5x2bnghhk55130bh_h0000gn / T / pip-build-FFU1vL / MySQL-python /
Stony
19

mysql_configdebe estar en el camino. En Mac, haz

export PATH=$PATH:/usr/local/mysql/bin/
pip install MySQL-python
tucán
fuente
44
He intentado esto y sigo teniendo el mismo error: 'raise ImproperlyConfigured ("Error al cargar el módulo MySQLdb:% s"% e) django.core.exceptions.ImproperlyConfigured: Error al cargar el módulo MySQLdb: Ningún módulo llamado MySQLdb'
filistea
14
pip install mysql-python

provocó un error:

EnvironmentError: mysql_config no encontrado

sudo apt-get install python-mysqldb

Se solucionó el problema.

Soli
fuente
11

Cómo lo hice funcionar:

virtualenv -p python3.5 env/test

Después de obtener mi env:

pip install pymysql
pip install django

Luego, ejecuté el proyecto de inicio y dentro de manage.py, agregué esto:

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

Además, actualicé esta configuración interna:

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

También he configparser==3.5.0instalado en mi virtualenv, no estoy seguro de si eso era necesario o no ...

Espero eso ayude,

Douglas
fuente
8

Lo siguiente funcionó perfectamente para mí, ejecutando Ubuntu 13.10 de 64 bits:

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

Ahora, navegue a su virtualenv (como la carpeta env) y ejecute lo siguiente:

sudo ./bin/pip install mysql-python

En realidad, encontré la solución en una pregunta separada y la estoy citando a continuación:

Si ha creado virtualenv con el modificador --no-site-packages (el valor predeterminado), las adiciones instaladas en todo el sistema, como MySQLdb, no se incluyen en los paquetes de entorno virtual.

Necesita instalar MySQLdb con el comando pip instalado con virtualenv. Active el virtualenv con el script bin / generate o use bin / pip desde virtualenv para instalar también la biblioteca MySQLdb localmente.

Alternativamente, cree un nuevo virtualenv con los paquetes de sitio del sistema incluidos utilizando el modificador --system-site-package.

Creo que esto también debería funcionar con OSX. El único problema sería obtener un comando equivalente para la instalación libmysqlclient-devy python-devque son necesarios para compilar mysql-python creo .

Espero que esto ayude.

Rafay
fuente
2
¡Gracias! Necesita instalar MySQLdb con el comando pip instalado con virtualenv. - Ayudas
dobs
Gracias. sudo ./bin/pip install mysql-pythones muy útil!
theblackpearl
8

Prueba esto: esto resolvió el problema para mí.

pip install MySQL-python

errakeshpd
fuente
2
Gracias. Esto funcionó para solucionar el problema para mí con heroku y cleardb: ignite en django 1.7.1.
Ryan Walton el
7

sudo apt-get install python-mysqldb funciona perfectamente en ubuntu

pip install mysql-pythongenera un error de entorno

Maurice Elagu
fuente
5

Esto funcionó para Red Hat Enterprise Linux Server versión 6.4

sudo yum install mysql-devel
sudo yum install python-devel
pip install mysql-python
Rohit Alekar
fuente
CentOS 7, opción 1 yum install MySQL-python:; la opción 2 (si se utiliza virtualenv): yum install mysql-devel; venv/bin/pip install MySQL-python.
hudolejev
4

Puedes instalar como pip install mysqlclient

Md Sirajus Salayhin
fuente
esto lo resolvió para mí, ya que creo que esta es la versión para usar para Python 3
A Star
3

Realicé la actualización a OSX Mavericks y Pycharm 3 y empiezo a recibir este error, utilicé pip e instalación fácil y obtuve el error:

el comando '/ usr / bin / clang' falló con el estado de salida 1.

Así que necesito actualizar a Xcode 5 y traté de instalar nuevamente usando pip.

pip install mysql-python

Eso soluciona todos los problemas.

unixeO
fuente
2

El error generado aquí es al importar el módulo de Python. Esto se puede resolver agregando la carpeta de paquetes de sitio de Python a la variable de entorno $ PYTHONPATH en OS X. Por lo tanto, podemos agregar el siguiente comando al archivo .bash_profile:

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

* reemplace xx con la versión de Python que está utilizando

Arun Reddy
fuente
Intenté esto: stackoverflow.com/questions/25459386/… pero fallé, esto me salvó .. (Y)
Kamaldeep singh Bhatia
2

Si está utilizando python3, intente esto (Mi sistema operativo es Ubuntu 16.04):

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

pipno funcionó para mí en el sistema de Windows 8 64 bits. easy_install mysql-pythonfunciona para mi. Puede usar easy_installpara evitar construir binarios en Windows si pip no funciona.

kta
fuente
1

Tuve el mismo problema en OSX 10.6.6. Pero solo un simple easy_install mysql-pythonterminal no lo resolvió ya que siguió otro problema:

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

Aparentemente, este problema surge después de actualizar de XCode3 (que se envía de forma nativa con OSX 10.6) a XCode4. Este ver más nuevo elimina el soporte para construir el arco ppc. Si es el mismo caso, intente hacer lo siguiente anteseasy_install mysql-python

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

Muchas gracias a Ned Deily por esta solución. Chequea aquí

jerrymouse
fuente
0

Para mí, el problema se resolvió simplemente reinstalando mysql-python

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

Instalar herramientas de línea de comandos funciona para mí:

xcode-select --install
Giovanni Benussi
fuente
0

Superé el mismo problema instalando la MySQL-pythonbiblioteca usando pip . Puede ver el mensaje que se muestra en mi consola cuando cambié por primera vez la configuración de mi base de datos en settings.py y ejecuté el comando makemigrations (La solución está siguiendo el mensaje a continuación, solo vea eso).

  (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

Finalmente superé este problema de la siguiente manera:

(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$ 
Hullull
fuente
0

Ejecute este comando

sudo pip install mysql-python;

ahora puedes ejecutar tu comando.

python manage.py startapp filename;
Siddharth Shukla
fuente
0

Encontré situaciones similares como la tuya que estoy usando python3.7 y django 2.1 en virtualenv en mac osx. Intenta ejecutar el comando:

pip install mysql-python
pip install pymysql

Y edite el __init__.pyarchivo en su carpeta de proyecto y agregue lo siguiente:

import pymysql

pymysql.install_as_MySQLdb()

Luego ejecuta: python3 manage.py runserver o python manage.py runserver

Fred
fuente