Bagaimana cara menggunakan MySQLdb dengan Python dan Django di OSX 10.6?


259

Ini adalah masalah yang banyak dibahas untuk pengguna OSX 10.6, tetapi saya belum dapat menemukan solusi yang berfungsi. Inilah pengaturan saya:

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

Saya membuat virtualenvwrapper dengan --no-situs-paket, kemudian menginstal Django. Ketika saya mengaktifkan virtualenv dan menjalankan python manage.py syncdb, saya mendapatkan kesalahan ini:

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

Saya juga menginstal MySQL untuk Python adaptor , tetapi tidak berhasil (mungkin saya menginstalnya dengan tidak benar?).

Adakah yang pernah menangani ini sebelumnya?


5
Masalah ini adalah hasil dari instalasi MySQL untuk Python yang tidak lengkap / salah. Secara khusus, saya harus mengedit path ke file mysql_config untuk menunjuk ke / usr / local / mysql / bin / mysql_config - dibahas secara lebih rinci dalam artikel ini: dakrauth.com/blog/entry/…
Joe

lakukan saja ini ---------- apt-get install python-mysqldb
shadow0359

pip install mysqlbekerja untukku!
Ivan Carrasco Quiroz

Jawaban:


330

Saya memiliki kesalahan yang sama dan pip install MySQL-python menyelesaikannya untuk saya.

Pemasangan alternatif:

  • Jika Anda tidak memiliki pip, easy_install MySQL-pythonharusnya berfungsi.
  • Jika python Anda dikelola oleh sistem pengemasan, Anda mungkin harus menggunakan sistem itu (mis. sudo apt-get install ...)

Di bawah, Soli mencatat bahwa jika Anda menerima kesalahan berikut:

EnvironmentError: mysql_config not found

... maka Anda memiliki masalah ketergantungan sistem lebih lanjut. Memecahkan ini akan bervariasi dari satu sistem ke sistem, tetapi untuk sistem yang diturunkan dari Debian:

sudo apt-get install python-mysqldb


2
ya, saya menggunakan Synaptic Package Manager untuk mencari mysql-python dan menginstal dan itu bekerja dengan baik. Terima kasih.
Tomasz Iniewicz

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

20
$ mysql_configProgram 'mysql_config' saat ini tidak diinstal. Anda dapat menginstalnya dengan cara:sudo apt-get install libmysqlclient-dev
anders

1
harus menambahkan jawaban ini ke dokumen resmi Django
Siwei Shen 申思维

1
Saya pikir saya adalah orang yang unik dengan kesalahan ini 'Command python setup.py egg_info gagal dengan kode kesalahan 1' setelah menjalankan 'pip instal MySQL-python'
RicardoGonzales

62

Menjalankan Ubuntu, saya harus melakukan:

sudo apt-get install python-mysqldb

8
Ia menjalankan OS X, bukan Ubuntu
Facundo Casco

8
Juga itu tidak akan memasukkannya ke dalam virtualenv
Twirrim

58

Menambahkan ke jawaban lain, berikut ini membantu saya menyelesaikan instalasi mysql-python:

virtualenv, mysql-python, pip: ada yang tahu caranya?

Di Ubuntu ...

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

Jangan lupa menambahkan 'sudo' ke awal perintah jika Anda tidak memiliki izin yang tepat.


1
kuncinya adalah apt-get install python-dev. Tidak tahu mengapa saya menginstal versi dev python 2 tahun kemudian, tetapi ini berfungsi sampai hari ini menggunakan python 2.7.3. Hanya 3 jam terbuang.
user798719

23

Coba ini perintah di bawah ini. Mereka bekerja untuk saya:

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

Metode ini memecahkan masalah saya. Semua saran lain sebelum memberi saya pesan kesalahanCommand "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
Terima kasih, coba semua yang disebutkan di atas. Tidak ada yang bekerja di OSX 10.11 mengharapkan ini
Paullo

1
@LearnAWK tidak berfungsi. Saya masih mendapatkan perintah galat "python setup.py egg_info" gagal dengan kode galat 1 di / private / var / folder / 3m / 97mbsh5x2bnghhk55130bh_h0000gn / T / pip-build-FFU1vL / MySQL-python /
Stony

19

mysql_configharus di jalan. Di Mac, lakukan

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

4
Saya sudah mencoba ini dan masih mendapatkan kesalahan yang sama: 'naikkan konfigurasi yang tidak benar ("Kesalahan memuat modul MySQLdb:% s"% e) django.core.exceptions.Imaknya Terkonfigurasi: Kesalahan memuat modul MySQLdb: Tidak ada modul bernama MySQLdb'
filistea

14
pip install mysql-python

menimbulkan kesalahan:

EnvironmentError: mysql_config tidak ditemukan

sudo apt-get install python-mysqldb

memperbaiki masalah.


11

Bagaimana saya membuatnya bekerja:

virtualenv -p python3.5 env/test

Setelah sumber env saya:

pip install pymysql
pip install django

Lalu, saya menjalankan startproject dan di dalam manage.py, saya menambahkan ini:

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

Juga, perbarui pengaturan di dalam ini:

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

saya juga punya configparser==3.5.0 menginstal di virtualenv saya, tidak yakin apakah itu diperlukan atau tidak ...

Semoga ini bisa membantu,


8

Berikut ini berfungsi dengan baik untuk saya, menjalankan Ubuntu 13.10 64-bit:

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

Sekarang, navigasikan ke virtualenv Anda (seperti folder env) dan jalankan yang berikut:

sudo ./bin/pip install mysql-python

Saya sebenarnya menemukan solusinya dalam pertanyaan terpisah dan saya kutip di bawah ini:

Jika Anda telah membuat virtualenv dengan saklar --no-situs-paket (default), maka tambahan yang diinstal seluruh sistem seperti MySQLdb tidak termasuk dalam paket lingkungan virtual.

Anda perlu menginstal MySQLdb dengan perintah pip diinstal dengan virtualenv. Aktifkan virtualenv dengan bin / aktifkan skrip, atau gunakan bin / pip dari dalam virtualenv untuk menginstal pustaka MySQLdb secara lokal juga.

Atau, buat virtualenv baru dengan paket-paket sistem situs yang disertakan dengan menggunakan switch --system-site-package.

Saya pikir ini juga harus bekerja dengan OSX. Satu-satunya masalah adalah mendapatkan perintah yang setara untuk menginstal libmysqlclient-devdan python-devkarena mereka diperlukan untuk dikompilasi mysql-python saya kira.

Semoga ini membantu.


2
Terima kasih! Anda perlu menginstal MySQLdb dengan perintah pip diinstal dengan virtualenv. - Membantu
dobs

Terima kasih. sudo ./bin/pip install mysql-pythonsangat membantu!
theblackpearl

8

Coba ini: Ini menyelesaikan masalah untuk saya.

pip instal MySQL-python


2
Terima kasih. Ini berfungsi untuk memperbaiki masalah bagi saya dengan heroku dan cleardb: ignite on django 1.7.1.
Ryan Walton


7

sudo apt-get install python-mysqldb berfungsi dengan baik di ubuntu

pip install mysql-pythonmenimbulkan Kesalahan Lingkungan


5

Ini berfungsi untuk Red Hat Enterprise Linux Server rilis 6.4

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

CentOS 7, opsi 1 yum install MySQL-python:; opsi 2 (jika menggunakan virtualenv): yum install mysql-devel; venv/bin/pip install MySQL-python.
hudolejev

4

Anda dapat menginstal sebagai pip install mysqlclient


ini mengurutkannya untuk saya, karena saya percaya ini adalah versi yang digunakan untuk Python 3
A Star

3

Saya melakukan upgrade ke OSX Mavericks dan Pycharm 3 dan mulai mendapatkan kesalahan ini, saya menggunakan pip dan mudah menginstal dan mendapatkan kesalahan:

perintah '/ usr / bin / dentang' gagal dengan status keluar 1.

Jadi saya perlu memperbarui ke Xcode 5 dan mencoba lagi untuk menginstal menggunakan pip.

pip install mysql-python

Itu memperbaiki semua masalah.


2

Kesalahan yang diangkat di sini adalah mengimpor modul python. Ini dapat diselesaikan dengan menambahkan folder paket situs python ke variabel lingkungan $ PYTHONPATH pada OS X. Jadi kita bisa menambahkan perintah berikut ke file .bash_profile:

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

* ganti xx dengan versi python yang Anda gunakan


Saya mencoba ini: stackoverflow.com/questions/25459386/… tetapi gagal, ini menyelamatkan saya .. (Y)
Kamaldeep singh Bhatia

2

Jika Anda menggunakan python3, coba ini (My OS is Ubuntu 16.04):

sudo apt-get install python3-mysqldb

2

piptidak bekerja untuk saya di sistem windows 8 64 bit. easy_install mysql-pythonbekerja untukku. Anda dapat menggunakan easy_installuntuk menghindari membangun binari di windows jika pip tidak berfungsi.


1

Saya memiliki masalah yang sama pada OSX 10.6.6. Tetapi hanya easy_install mysql-pythonpada terminal sederhana tidak menyelesaikannya sebagai cegukan lain mengikuti:

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

Rupanya, masalah ini muncul setelah memutakhirkan dari XCode3 (yang secara bawaan dikirimkan dengan OSX 10.6) ke XCode4. Ver yang lebih baru ini menghilangkan dukungan untuk membuat lengkungan ppc. Jika ini kasusnya sama, coba lakukan seperti berikut sebelumnyaeasy_install mysql-python

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

Terima kasih banyak kepada Ned Deily untuk solusi ini. Periksa di sini


0

Bagi saya masalahnya dapat diselesaikan dengan hanya menginstal ulang mysql-python

pip uninstall mysql-python
pip install mysql-python


0

Saya mengatasi masalah yang sama dengan menginstal MySQL-pythonperpustakaan menggunakan pip . Anda dapat melihat pesan yang ditampilkan di konsol saya ketika saya pertama kali mengubah pengaturan basis data saya di settings.py dan mengeksekusi perintah makemigrations (Solusinya mengikuti pesan di bawah ini, lihat saja).

  (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

Akhirnya saya mengatasi masalah ini sebagai berikut:

(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

Jalankan perintah ini

sudo pip install mysql-python;

sekarang Anda dapat menjalankan perintah Anda.

python manage.py startapp filename;

0

Saya mengalami situasi serupa seperti Anda bahwa saya menggunakan python3.7 dan django 2.1 di virtualenv di mac osx. Coba jalankan perintah:

pip install mysql-python
pip install pymysql

Dan edit __init__.pyfile di folder proyek Anda dan tambahkan berikut ini:

import pymysql

pymysql.install_as_MySQLdb()

Kemudian jalankan: python3 manage.py runserver atau python manage.py runserver

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.