Jak korzystać z MySQLdb z Pythonem i Django w OSX 10.6?

259

Jest to szeroko dyskutowany problem dla użytkowników OSX 10.6, ale nie udało mi się znaleźć rozwiązania, które działa. Oto moja konfiguracja:

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

Tworzę virtualenvwrapper z pakietami --no-site, a następnie instaluję Django. Kiedy aktywuję virtualenv i uruchamiam python manage.py syncdb, pojawia się ten błąd:

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

Zainstalowałem również adapter MySQL dla Python , ale bezskutecznie (może zainstalowałem go nieprawidłowo?).

Ktoś wcześniej się tym zajmował?

Joe
źródło
5
Ten problem był wynikiem niepełnej / niepoprawnej instalacji adaptera MySQL for Python. W szczególności musiałem edytować ścieżkę do pliku mysql_config, aby wskazać / usr / local / mysql / bin / mysql_config - omówiony bardziej szczegółowo w tym artykule: dakrauth.com/blog/entry/…
Joe
po prostu zrób to ---------- apt-get install python-mysqldb
shadow0359
pip install mysqlpracował dla mnie!
Ivan Carrasco Quiroz

Odpowiedzi:

330

Miałem ten sam błąd i pip install MySQL-pythonrozwiązałem go dla siebie.

Alternatywne instalacje:

  • Jeśli nie masz pipa, easy_install MySQL-pythonpowinno działać.
  • Jeśli twoim pytonem zarządza system pakowania, być może będziesz musiał użyć tego systemu (np. sudo apt-get install ...)

Poniżej Soli zauważa, że ​​jeśli pojawi się następujący błąd:

EnvironmentError: mysql_config not found

... masz kolejny problem z zależnością systemu. Rozwiązanie będzie się różnić w zależności od systemu, ale w przypadku systemów pochodnych Debiana:

sudo apt-get install python-mysqldb

Clint
źródło
2
tak, użyłem Synaptic Package Manager do wyszukania mysql-python i instalacji, i zadziałało świetnie. Dzięki.
Tomasz Iniewicz
6
Pod Fedorą 17: sudo yum install MySQL-python:)
g19fanatic
20
$ mysql_configProgram „mysql_config” nie jest obecnie zainstalowany. Możesz go zainstalować, dotykając:sudo apt-get install libmysqlclient-dev
anders
1
należy dodać tę odpowiedź do oficjalnego dokumentu django
Siwei Shen 申思维
1
Myślę, że jestem wyjątkową osobą z tym błędem „Polecenie python setup.py egg_info nie powiodło się z kodem błędu 1„ po uruchomieniu ”pip install MySQL-python”
RicardoGonzales
62

Korzystając z Ubuntu, musiałem:

sudo apt-get install python-mysqldb
Kottin
źródło
8
Działa pod systemem OS X, a nie Ubuntu
Facundo Casco,
8
To też nie umieściłoby go w wirtualnej
grze
58

Dodając do innych odpowiedzi, poniższe pomogły mi zakończyć instalację mysql-python:

virtualenv, mysql-python, pip: ktoś wie jak?

W systemie Ubuntu ...

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

Nie zapomnij dodać „sudo” na początku poleceń, jeśli nie masz odpowiednich uprawnień.

MrOodles
źródło
1
kluczem jest apt-get install python-dev. Nie mam pojęcia, dlaczego instaluję wersję deweloperską Pythona 2 lata później, ale działa to na dzień dzisiejszy przy użyciu Pythona 2.7.3. Zmarnowane tylko 3 godziny.
user798719,
23

Wypróbuj poniższe polecenia. Pracują dla mnie:

brew install mysql-connector-c 
pip install MySQL-python
DàChún
źródło
Ta metoda rozwiązała mój problem. Wszystkie pozostałe sugestie zawierają komunikat o błędzieCommand "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
Dzięki Świetnie, wypróbuj wszystkie powyższe. Żaden nie działał w systemie OSX 10.11. Spodziewaj się tego
Paullo
1
@LearnAWK to nie działa. Nadal pojawia się błąd Polecenie „python setup.py egg_info” nie powiodło się z kodem błędu 1 w / private / var / folder / 3m / 97mbsh5x2bnghhk55130bh_h0000gn / T / pip-build-FFU1vL / MySQL-python /
Stony
19

mysql_configmusi być na ścieżce. Na Macu zrób

export PATH=$PATH:/usr/local/mysql/bin/
pip install MySQL-python
tukan
źródło
4
Próbowałem tego i nadal pojawia się ten sam błąd: „podnieś Nieprawidłowo skonfigurowany („ Błąd ładowania modułu MySQLdb:% s ”% e) django.core.exceptions.ImproperlyConfigured: Błąd ładowania modułu MySQLdb: Brak modułu MySQLdb”
filistea
14
pip install mysql-python

zgłosił błąd:

EnvironmentError: nie znaleziono mysql_config

sudo apt-get install python-mysqldb

naprawiono problem.

Soli
źródło
11

Jak to działa:

virtualenv -p python3.5 env/test

Po pozyskaniu mojej env:

pip install pymysql
pip install django

Następnie uruchomiłem startproject i w manage.py dodałem to:

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

Zaktualizowałem również te ustawienia wewnętrzne:

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

Mam również configparser==3.5.0zainstalowany w mojej virtualenv, nie jestem pewien, czy to było wymagane, czy nie ...

Mam nadzieję, że to pomoże,

Douglas
źródło
8

Następujące działało idealnie dla mnie, działając na Ubuntu 13.10 64-bit:

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

Teraz przejdź do swojego virtualenv (takiego jak folder env) i wykonaj następujące czynności:

sudo ./bin/pip install mysql-python

Znalazłem rozwiązanie w osobnym pytaniu i cytuję to poniżej:

Jeśli utworzyłeś virtualenv za pomocą przełącznika --no-site-packages (domyślnie), to zainstalowane w całym systemie dodatki, takie jak MySQLdb, nie są zawarte w pakietach środowiska wirtualnego.

Musisz zainstalować MySQLdb z poleceniem pip zainstalowanym z virtualenv. Albo aktywuj virtualenv za pomocą skryptu bin / aktywuj, albo użyj bin / pip z poziomu virtualenv, aby lokalnie zainstalować bibliotekę MySQLdb.

Alternatywnie, utwórz nowy virtualenv z dołączonymi pakietami lokacji systemowych za pomocą przełącznika --system-lokacja-pakiet.

Myślę, że powinno to również działać z OSX. Jedynym problemem byłoby uzyskanie równoważnego polecenia do instalacji libmysqlclient-devi, python-devjak mysql-pythonsądzę , są one potrzebne do kompilacji .

Mam nadzieję że to pomoże.

Rafay
źródło
2
Dzięki! Musisz zainstalować MySQLdb z poleceniem pip zainstalowanym z virtualenv. - Pomaga
dobs
Dzięki. sudo ./bin/pip install mysql-pythonjest bardzo pomocny!
theblackpearl
8

Spróbuj tego: To rozwiązało problem.

pip zainstaluj MySQL-python

errakeshpd
źródło
2
Dzięki. To działało, aby rozwiązać problem dla mnie z heroku i cleardb: ignite on django 1.7.1.
Ryan Walton
7

sudo apt-get install python-mysqldb działa doskonale w Ubuntu

pip install mysql-pythonzgłasza błąd środowiska

Maurice Elagu
źródło
5

Działa to dla Red Hat Enterprise Linux Server wersja 6.4

sudo yum install mysql-devel
sudo yum install python-devel
pip install mysql-python
Rohit Alekar
źródło
CentOS 7, opcja 1 yum install MySQL-python:; Opcja 2 (w przypadku korzystania virtualenv) yum install mysql-devel; venv/bin/pip install MySQL-python.
hudolejev
4

Możesz zainstalować jako pip install mysqlclient

Sir Sirajus Salayhin
źródło
to posortowało to dla mnie, ponieważ uważam, że jest to wersja do użycia w Pythonie 3
A Star
3

Zrobiłem aktualizację do OSX Mavericks i Pycharm 3 i zacząłem otrzymywać ten błąd, użyłem pip i łatwej instalacji i dostałem błąd:

polecenie „/ usr / bin / clang” nie powiodło się ze statusem wyjścia 1.

Więc muszę zaktualizować do Xcode 5 i spróbować ponownie zainstalować przy użyciu pip.

pip install mysql-python

To rozwiązuje wszystkie problemy.

unixeO
źródło
2

Wystąpił tutaj błąd podczas importowania modułu python. Można to rozwiązać, dodając folder python site-packages do zmiennej środowiskowej $ PYTHONPATH w systemie OS X. Możemy więc dodać następujące polecenie do pliku .bash_profile:

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

* zamień xx na używaną wersję Pythona

Arun Reddy
źródło
Próbowałem tego: stackoverflow.com/questions/25459386/... ale nie udało mi się, to mnie uratowało .. (Y)
Kamaldeep singh Bhatia
2

Jeśli używasz Python3, spróbuj tego (Mój system operacyjny to Ubuntu 16.04):

sudo apt-get install python3-mysqldb
Dillion Wang
źródło
2

pipnie działało dla mnie w systemie Windows 8 64 bity. easy_install mysql-pythonpracuje dla mnie. Możesz użyć, easy_installaby uniknąć budowania plików binarnych w systemie Windows, jeśli pip nie działa.

kta
źródło
1

Miałem ten sam problem na OSX 10.6.6. Ale zwykły easy_install mysql-pythonterminal nie rozwiązał tego, gdy nastąpiła kolejna czkawka:

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

Najwyraźniej ten problem pojawia się po aktualizacji z XCode3 (który jest natywnie dostarczany z OSX 10.6) do XCode4. Ta nowsza wersja usuwa obsługę budowania ppc arch. Jeśli jest to ten sam przypadek, spróbuj wykonać następujące czynności wcześniejeasy_install mysql-python

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

Ogromne podziękowania dla Neda Deily'ego za to rozwiązanie. Sprawdź tutaj

jerrymouse
źródło
0

Dla mnie problem został rozwiązany przez ponowną instalację mysql-python

pip uninstall mysql-python
pip install mysql-python
Özer S.
źródło
0

Zainstaluj narzędzia wiersza polecenia Działa dla mnie:

xcode-select --install
Giovanni Benussi
źródło
0

Rozwiązałem ten sam problem, instalując MySQL-pythonbibliotekę za pomocą pip . Możesz zobaczyć komunikat wyświetlany na mojej konsoli, kiedy po raz pierwszy zmieniłem ustawienia bazy danych w settings.py i wykonałem polecenie makemigrations (Rozwiązanie jest zgodne z poniższym komunikatem, po prostu to zobacz).

  (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

Wreszcie pokonałem ten problem w następujący sposób:

(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
źródło
0

Uruchom to polecenie

sudo pip install mysql-python;

teraz możesz uruchomić polecenie.

python manage.py startapp filename;
Siddharth Shukla
źródło
0

Napotkałem podobne sytuacje, takie jak Twoja, gdy używam python3.7 i django 2.1 w virtualenv na Mac OSX. Spróbuj uruchomić polecenie:

pip install mysql-python
pip install pymysql

I edytuj __init__.pyplik w folderze projektu i dodaj:

import pymysql

pymysql.install_as_MySQLdb()

Następnie uruchom: python3 manage.py runserver lub python manage.py runserver

Fred
źródło