Como usar o MySQLdb com Python e Django no OSX 10.6?


259

Esse é um problema muito discutido para usuários do OSX 10.6, mas não consegui encontrar uma solução que funcione. Aqui está a minha configuração:

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

Eu crio um virtualenvwrapper com --no-site-packages, e instalei o Django. Quando ativo o virtualenv e executo python manage.py syncdb, recebo este erro:

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

Também instalei o adaptador MySQL para Python , mas sem sucesso (talvez eu o tenha instalado incorretamente?).

Alguém já lidou com isso antes?


5
Esse problema foi resultado de uma instalação incompleta / incorreta do adaptador MySQL for Python. Especificamente, eu tive que editar o caminho do arquivo mysql_config para apontar para / usr / local / mysql / bin / mysql_config - discutido em mais detalhes neste artigo: dakrauth.com/blog/entry/…
Joe

apenas faça isso ---------- apt-get install python-mysqldb
shadow0359

pip install mysqltrabalhou para mim!
Ivan Carrasco Quiroz

Respostas:


330

Eu tive o mesmo erro e o pip install MySQL-pythonresolvi para mim.

Instalações alternativas:

  • Se você não tem pip, easy_install MySQL-pythondeve funcionar.
  • Se o seu python é gerenciado por um sistema de empacotamento, talvez você precise usar esse sistema (por exemplo sudo apt-get install ...)

Abaixo, Soli observa que, se você receber o seguinte erro:

EnvironmentError: mysql_config not found

... então você tem um problema adicional de dependência do sistema. Resolver isso varia de sistema para sistema, mas para sistemas derivados do Debian:

sudo apt-get install python-mysqldb


2
Sim, usei o Synaptic Package Manager para procurar e instalar o mysql-python e funcionou muito bem. Obrigado.
Tomasz Iniewicz

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

20
$ mysql_configO programa 'mysql_config' não está instalado no momento. Você pode instalá-lo digitando:sudo apt-get install libmysqlclient-dev
anders

1
deve adicionar esta resposta ao documento oficial do django
Siwei Shen申思维

1
Eu acho que sou a única pessoa com este erro 'Command python setup.py egg_info falhou com código de erro 1' após run 'pip instalar o MySQL-python'
RicardoGonzales

62

Executando o Ubuntu, eu tinha que fazer:

sudo apt-get install python-mysqldb

8
Ele está correndo OS X, não Ubuntu
Facundo Casco

8
Também que não iria colocá-lo no virtualenv
Twirrim

58

Adicionando outras respostas, o seguinte me ajudou a concluir a instalação do mysql-python:

virtualenv, mysql-python, pip: alguém sabe como?

No Ubuntu ...

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

Não se esqueça de adicionar 'sudo' ao início dos comandos se você não tiver as permissões adequadas.


1
a chave é apt-get install python-dev. Não faço ideia por que estou instalando uma versão dev do python 2 anos depois, mas isso funciona hoje usando o python 2.7.3. Apenas 3 horas desperdiçadas.
User798719

23

Tente isso os comandos abaixo. Eles trabalham para mim:

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

Este método resolveu meu problema. Todas as outras sugestões antes me dão uma mensagem de erro 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
Muito obrigado, tente todos os itens acima. Nenhum funcionou no OSX 10.11 esperava isso #
Paullo 01/01

1
@LearnAWK não funciona. Ainda recebo o erro O comando "python setup.py egg_info" falhou com o código de erro 1 em / private / var / folders / 3m / 97mbsh5x2bnghhk55130bh_h0000gn / T / pip-build-FFU1vL / MySQL-python /
Stony

19

mysql_configdeve estar no caminho. No Mac, faça

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

4
Eu tentei isso e ainda recebo o mesmo erro: 'raise ImproperlyConfigured ("Erro ao carregar o módulo MySQLdb:% s"% e) django.core.exceptions.ImproperlyConfigured: Erro ao carregar o módulo MySQLdb: nenhum módulo chamado MySQLdb'
filistea

14
pip install mysql-python

gerou um erro:

EnvironmentError: mysql_config não encontrado

sudo apt-get install python-mysqldb

corrigiu o problema.


11

Como eu consegui funcionar:

virtualenv -p python3.5 env/test

Depois de comprar meu env:

pip install pymysql
pip install django

Em seguida, executei o projeto start e, dentro do manage.py, adicionei o seguinte:

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

Além disso, atualizei essas configurações internas:

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

Também configparser==3.5.0instalei no meu virtualenv, não tenho certeza se isso foi necessário ou não ...

Espero que ajude,


8

O seguinte funcionou perfeitamente para mim, executando o Ubuntu 13.10 de 64 bits:

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

Agora, navegue até seu virtualenv (como a pasta env) e execute o seguinte:

sudo ./bin/pip install mysql-python

Na verdade, encontrei a solução em uma pergunta separada e estou citando-a abaixo:

Se você criou o virtualenv com a opção --no-site-packages (o padrão), as adições instaladas em todo o sistema, como o MySQLdb, não serão incluídas nos pacotes do ambiente virtual.

Você precisa instalar o MySQLdb com o comando pip instalado com o virtualenv. Ative o virtualenv com o script bin / activ ou use bin / pip de dentro do virtualenv para instalar a biblioteca MySQLdb localmente também.

Como alternativa, crie um novo virtualenv com os pacotes de sites do sistema incluídos usando a opção --system-site-package.

Eu acho que isso também deve funcionar com o OSX. O único problema seria obter um comando equivalente para a instalação libmysqlclient-deve, python-devcomo eles são necessários para compilar, mysql-pythoneu acho.

Espero que isto ajude.


2
Obrigado! Você precisa instalar o MySQLdb com o comando pip instalado com o virtualenv. - Ajuda
dobs

Obrigado. sudo ./bin/pip install mysql-pythoné muito útil!
precisa

8

Tente o seguinte: Isso resolveu o problema para mim.

pip instala o MySQL-python


2
Obrigado. Isso funcionou para corrigir o problema para mim com o heroku e cleardb: ignite no django 1.7.1.
Ryan Walton


7

sudo apt-get install python-mysqldb funciona perfeitamente no ubuntu

pip install mysql-pythongera um erro de ambiente


5

Isso funcionou para o Red Hat Enterprise Linux Server versão 6.4

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

CentOS 7, opção 1 yum install MySQL-python:; Opção 2 (se estiver usando virtualenv): yum install mysql-devel; venv/bin/pip install MySQL-python.
Hudolejev

4

Você pode instalar como pip install mysqlclient


isso classificou para mim, pois acredito que esta é a versão a ser usada no Python 3
A Star

3

Fiz a atualização para o OSX Mavericks e Pycharm 3 e comecei a receber esse erro, usei pip e easy install e obtive o erro:

o comando '/ usr / bin / clang' falhou com o status de saída 1.

Então, eu preciso atualizar para o Xcode 5 e tentei instalar novamente usando o pip.

pip install mysql-python

Isso resolve todos os problemas.


2

O erro gerado aqui está na importação do módulo python. Isso pode ser resolvido adicionando a pasta python site-packages à variável de ambiente $ PYTHONPATH no OS X. Portanto, podemos adicionar o seguinte comando ao arquivo .bash_profile:

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

* substitua xx pela versão python que você está usando


Eu tentei isso: stackoverflow.com/questions/25459386/... , mas não conseguiu, este me salvou .. (Y)
Kamaldeep Singh Bhatia

2

Se você estiver usando python3, tente o seguinte (Meu SO é Ubuntu 16.04):

sudo apt-get install python3-mysqldb

2

pipnão funcionou para mim no sistema Windows 8 de 64 bits. easy_install mysql-pythonfunciona para mim. Você pode usar easy_installpara evitar a construção de binários nas janelas se o pip não funcionar.


1

Eu tive o mesmo problema no OSX 10.6.6. Mas apenas um simples easy_install mysql-pythonterminal não resolveu, pois outro soluço se seguiu:

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

Aparentemente, esse problema surge após a atualização do XCode3 (fornecido originalmente com o OSX 10.6) para o XCode4. Esta versão mais recente remove o suporte para a construção de arco ppc. Se for o mesmo caso, tente fazer o seguinte anteseasy_install mysql-python

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

Muito obrigado a Ned Deily por esta solução. Verifique aqui


0

Para mim, o problema foi resolvido simplesmente reinstalando o mysql-python

pip uninstall mysql-python
pip install mysql-python


0

Eu superei o mesmo problema instalando a MySQL-pythonbiblioteca usando o pip . Você pode ver a mensagem exibida no meu console quando alterei as configurações do banco de dados em settings.py e executei o comando makemigrations (A solução está seguindo a mensagem abaixo, veja apenas isso).

  (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, superei esse problema da seguinte maneira:

(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

Execute este comando

sudo pip install mysql-python;

agora você pode executar seu comando.

python manage.py startapp filename;

0

Eu encontrei situações semelhantes à sua que estou usando python3.7 e django 2.1 no virtualenv no mac osx. Tente executar o comando:

pip install mysql-python
pip install pymysql

E edite o __init__.pyarquivo na sua pasta do projeto e adicione o seguinte:

import pymysql

pymysql.install_as_MySQLdb()

Em seguida, execute: python3 manage.py runserver ou python manage.py runserver

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.