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?

Joe
sumber
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

Clint
sumber
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
kottin
sumber
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.

MrOodles
sumber
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
DàChún
sumber
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
toucan
sumber
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.

Soli
sumber
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,

Douglas
sumber
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.

Rafay
sumber
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

errakeshpd
sumber
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

Maurice Elagu
sumber
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
Rohit Alekar
sumber
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

Md Sirajus Salayhin
sumber
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.

unixeO
sumber
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

Arun Reddy
sumber
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
Dillion Wang
sumber
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.

kta
sumber
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

jerigen
sumber
0

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

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

Instal Command Line Tools Bekerja untuk saya:

xcode-select --install
Giovanni Benussi
sumber
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$ 
camar
sumber
0

Jalankan perintah ini

sudo pip install mysql-python;

sekarang Anda dapat menjalankan perintah Anda.

python manage.py startapp filename;
Siddharth Shukla
sumber
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

Fred
sumber