จะใช้ MySQLdb กับ Python และ Django ใน OSX 10.6 ได้อย่างไร


259

นี่เป็นปัญหาที่พูดถึงกันมากสำหรับผู้ใช้ OSX 10.6 แต่ฉันไม่สามารถหาวิธีแก้ปัญหาที่ใช้งานได้ นี่คือการตั้งค่าของฉัน:

Python 2.6.1 64 บิต Django 1.2.1 MySQL 5.1.47 osx10.6 64 บิต

ฉันสร้าง virtualenvwrapper ด้วย --no-site-packages จากนั้นติดตั้ง Django เมื่อฉันเปิดใช้งาน virtualenv และเรียกใช้ python Manage.py syncdb ฉันได้รับข้อผิดพลาดนี้:

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

ฉันได้ติดตั้งMySQL สำหรับอะแดปเตอร์Pythonแล้ว แต่ไม่มีประโยชน์ (บางทีฉันอาจติดตั้งไม่ถูกต้องเหรอ)

มีใครเคยจัดการกับเรื่องนี้มาก่อนหรือไม่


5
ปัญหานี้เป็นผลมาจากการติดตั้ง MySQL สำหรับอะแดปเตอร์ Python ไม่สมบูรณ์ / ไม่ถูกต้อง โดยเฉพาะฉันต้องแก้ไขเส้นทางไปยังไฟล์ mysql_config ให้ชี้ไปที่ / usr / local / mysql / bin / mysql_config - กล่าวถึงรายละเอียดเพิ่มเติมในบทความนี้: dakrauth.com/blog/entry/ ......
Joe

เพียงทำสิ่งนี้ ---------- apt-get install python-mysqldb
shadow0359

pip install mysqlทำงานให้ฉัน!
Ivan Carrasco Quiroz

คำตอบ:


330

ฉันมีข้อผิดพลาดเดียวกันและpip install MySQL-pythonแก้ไขให้ฉัน

การติดตั้งสำรอง:

  • หากคุณไม่มี pip easy_install MySQL-pythonควรใช้งานได้
  • ถ้าหลามของคุณได้รับการจัดการโดยระบบบรรจุภัณฑ์คุณอาจต้องใช้ระบบนั้น (เช่นsudo apt-get install ...)

ด้านล่าง Soli ตั้งข้อสังเกตว่าถ้าคุณได้รับข้อผิดพลาดต่อไปนี้:

EnvironmentError: mysql_config not found

... จากนั้นคุณมีปัญหาการพึ่งพาระบบเพิ่มเติม การแก้ปัญหานี้จะแตกต่างกันไปตามระบบ แต่สำหรับระบบ Debian ที่ได้รับ:

sudo apt-get install python-mysqldb


2
ใช่ฉันใช้ Synaptic Package Manager เพื่อค้นหา mysql-python และติดตั้งและใช้งานได้ดี ขอบคุณ
Tomasz Iniewicz

6
ภายใต้ Fedora 17: sudo yum install MySQL-python:)
g19fanatic

20
$ mysql_configไม่ได้ติดตั้งโปรแกรม 'mysql_config' คุณสามารถติดตั้งได้โดยที yping:sudo apt-get install libmysqlclient-dev
Anders

1
ควรเพิ่มคำตอบนี้ลงในเอกสารอย่างเป็นทางการของ django
Siwei Shen 申思维

1
ฉันคิดว่าฉันเป็นคนที่มีข้อผิดพลาด 'Command python setup.py egg_info ล้มเหลวพร้อมรหัสข้อผิดพลาด 1' หลังจากเรียกใช้ 'pip install MySQL-python'
RicardoGonzales


58

การเพิ่มคำตอบอื่น ๆ ต่อไปนี้ช่วยให้ฉันเสร็จสิ้นการติดตั้ง mysql-python:

virtualenv, mysql-python, pip: ไม่มีใครรู้ได้อย่างไร

บน Ubuntu ...

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

อย่าลืมเพิ่ม 'sudo' ในตอนต้นของคำสั่งถ้าคุณไม่มีสิทธิ์ที่เหมาะสม


1
กุญแจสำคัญคือ apt-get install python-dev ไม่รู้เลยว่าทำไมฉันถึงติดตั้งงูหลามรุ่น dev 2 ปีต่อมา แต่ตอนนี้ใช้งานได้ตั้งแต่วันนี้กับงูหลาม 2.7.3 เสียเวลาเพียง 3 ชั่วโมง
user798719

23

ลองคำสั่งด้านล่างนี้ พวกเขาทำงานให้ฉัน:

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

วิธีนี้แก้ปัญหาของฉันได้ ข้อเสนอแนะอื่น ๆ ทั้งหมดก่อนที่จะให้ข้อความแสดงข้อผิดพลาดของCommand "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
ขอบคุณมากลองทั้งหมดที่กล่าวข้างต้น ไม่มีใครทำงานกับ OSX 10.11 ได้คาดหวังสิ่งนี้
Paullo

1
@ เรียนรู้มันไม่ทำงาน ฉันยังคงได้รับข้อผิดพลาดคำสั่ง "python setup.py egg_info" ล้มเหลวด้วยรหัสข้อผิดพลาด 1 ใน / private / var / โฟลเดอร์ / 3m / 97mbsh5x2bnghhk55130bh_h0000gn / T / pip-build-FFU1vL / MySQL-python /
Stony

19

mysql_configจะต้องอยู่บนเส้นทาง บน Mac ให้ทำ

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

4
ฉันได้ลองแล้วและยังได้รับข้อผิดพลาดเดียวกัน: 'เพิ่ม ImproperlyConfigured ("ข้อผิดพลาดในการโหลดโมดูล MySQLdb:% s"% e) django.core.exceptions.ImproperlyConfigured: ข้อผิดพลาดในการโหลดโมดูล MySQLdb: ไม่มีโมดูลชื่อ MySQLdb "
filistea

14
pip install mysql-python

เกิดข้อผิดพลาด:

EnvironmentError: ไม่พบ mysql_config

sudo apt-get install python-mysqldb

แก้ไขปัญหา


11

ฉันทำให้มันทำงานได้อย่างไร:

virtualenv -p python3.5 env/test

หลังจากจัดหา env ของฉัน:

pip install pymysql
pip install django

จากนั้นฉันก็เริ่มต้นโปรเจคและภายใน Manage.py ฉันเพิ่มสิ่งนี้:

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

อัปเดตการตั้งค่าภายในนี้ด้วย:

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

ฉันยังconfigparser==3.5.0ติดตั้งใน virtualenv ของฉันด้วยไม่แน่ใจว่าจำเป็นหรือไม่ ...

หวังว่าจะช่วย


8

ต่อไปนี้ทำงานได้อย่างสมบูรณ์แบบสำหรับฉันโดยใช้ Ubuntu 13.10 64- บิต:

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

ตอนนี้นำทางไปยัง virtualenv ของคุณ (เช่นโฟลเดอร์ env) และดำเนินการต่อไปนี้:

sudo ./bin/pip install mysql-python

ฉันพบวิธีแก้ปัญหาในคำถามที่แยกต่างหากและฉันอ้างถึงด้านล่าง:

หากคุณสร้าง virtualenv ด้วยสวิตช์ --no-site-packages (ค่าเริ่มต้น) ดังนั้นการเพิ่มการติดตั้งทั่วทั้งระบบเช่น MySQLdb จะไม่รวมอยู่ในแพ็คเกจสภาพแวดล้อมเสมือน

คุณต้องติดตั้ง MySQLdb ด้วยคำสั่ง pip ที่ติดตั้งไว้กับ virtualenv เปิดใช้งาน virtualenv ด้วยสคริปต์ bin / เปิดใช้งานหรือใช้ bin / pip จากภายใน virtualenv เพื่อติดตั้งไลบรารี MySQLdb ภายในเครื่องเช่นกัน

อีกวิธีหนึ่งคือสร้าง virtualenv ใหม่พร้อมกับระบบไซต์แพ็กเกจที่รวมไว้โดยใช้สวิตช์ --system-site-package

ฉันคิดว่านี่ควรทำงานกับ OSX ด้วย ปัญหาเดียวที่จะได้รับคำสั่งเทียบเท่าสำหรับการติดตั้งlibmysqlclient-devและpython-devตามที่พวกเขาต้องการรวบรวม mysql-pythonฉันเดา

หวังว่านี่จะช่วยได้


2
ขอบคุณ! คุณต้องติดตั้ง MySQLdb ด้วยคำสั่ง pip ที่ติดตั้งไว้กับ virtualenv - ช่วย
dobs

ขอบคุณ sudo ./bin/pip install mysql-pythonมีประโยชน์มาก!
theblackpearl

8

ลองสิ่งนี้: วิธีนี้แก้ไขปัญหาให้ฉันได้

pip ติดตั้ง MySQL-python


2
ขอบคุณ สิ่งนี้ทำงานเพื่อแก้ไขปัญหาสำหรับฉันด้วย heroku และ cleardb: ติดไฟบน django 1.7.1
Ryan Walton

7

ปัญหานี้เกิดจากการติดตั้ง MySQL สำหรับ Python ของอะแดปเตอร์ไม่สมบูรณ์ / ไม่ถูกต้อง โดยเฉพาะฉันต้องแก้ไขเส้นทางไปยังไฟล์ mysql_config ให้ชี้ไปที่ / usr / local / mysql / bin / mysql_config - กล่าวถึงรายละเอียดเพิ่มเติมในบทความนี้: http://dakrauth.com/blog/entry/python-and- Django การติดตั้ง-Mac-os-x-เสือดาว /


7

sudo apt-get install python-mysqldb ทำงานได้อย่างสมบูรณ์ในอูบุนตู

pip install mysql-pythonทำให้เกิดข้อผิดพลาดด้านสิ่งแวดล้อม


5

ใช้งานได้กับ Red Hat Enterprise Linux Server รีลีส 6.4

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

CentOS 7 ตัวเลือก 1 yum install MySQL-python:; ทางเลือกที่ 2 (ถ้าใช้ yum install mysql-devel; venv/bin/pip install MySQL-pythonvirtualenv):
hudolejev

4

คุณสามารถติดตั้งเป็น pip install mysqlclient


นี่จัดเรียงสำหรับฉันเนื่องจากฉันเชื่อว่านี่เป็นรุ่นที่ใช้สำหรับ Python 3
A Star

3

ฉันอัปเกรดเป็น OSX Mavericks และ Pycharm 3 และเริ่มรับข้อผิดพลาดนี้ฉันใช้ pip และติดตั้งง่ายและได้รับข้อผิดพลาด:

คำสั่ง '/ usr / bin / clang' ล้มเหลวด้วยสถานะออก 1

ดังนั้นฉันต้องอัปเดตเป็น Xcode 5 และลองอีกครั้งเพื่อติดตั้งโดยใช้ pip

pip install mysql-python

ที่แก้ไขปัญหาทั้งหมด


2

ข้อผิดพลาดที่เกิดขึ้นที่นี่คือการนำเข้าโมดูลหลาม สิ่งนี้สามารถแก้ไขได้โดยการเพิ่มโฟลเดอร์ python site-packages ลงในตัวแปรสภาพแวดล้อม $ PYTHONPATH บน OS X ดังนั้นเราสามารถเพิ่มคำสั่งต่อไปนี้ในไฟล์. bash_profile:

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

* แทนที่ xx ด้วยเวอร์ชัน python ที่คุณใช้


ฉันลองทำสิ่งนี้: stackoverflow.com/questions/25459386/ แต่ล้มเหลวสิ่งนี้ช่วยฉัน .. (Y)
Kamaldeep singh Bhatia


2

pipไม่ทำงานสำหรับฉันบนระบบ Windows 8 64 บิต easy_install mysql-pythonทำงานได้สำหรับฉัน คุณสามารถใช้easy_installเพื่อหลีกเลี่ยงการสร้างไบนารีบน windows หาก pip ไม่ทำงาน


1

ฉันมีปัญหาเดียวกันกับ OSX 10.6.6 แต่เพียงeasy_install mysql-pythonเทอร์มินัลอย่างง่ายไม่สามารถแก้ปัญหาได้เนื่องจากอาการสะอึกอื่นตามมา:

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

เห็นได้ชัดว่าปัญหานี้เกิดขึ้นหลังจากการอัพเกรดจาก XCode3 (ซึ่งจัดส่งมาพร้อมกับ OSX 10.6) เป็น XCode4 เวอร์ชั่นใหม่กว่านี้จะลบการสนับสนุนสำหรับการสร้าง ppc arch หากเป็นกรณีเดียวกันลองทำดังนี้ก่อนeasy_install mysql-python

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

ขอบคุณ Ned Deily มากสำหรับการแก้ปัญหานี้ ตรวจสอบที่นี่


0

สำหรับฉันปัญหาได้รับการแก้ไขโดยเพียงติดตั้ง mysql-python อีกครั้ง

pip uninstall mysql-python
pip install mysql-python


0

ฉันเอาชนะปัญหาเดียวกันด้วยการติดตั้งไลบรารี่MySQL-pythonโดยใช้pip คุณสามารถเห็นข้อความที่แสดงบนคอนโซลของฉันเมื่อฉันเปลี่ยนการตั้งค่าฐานข้อมูลของฉันเป็นครั้งแรกใน settings.py และดำเนินการคำสั่ง makemigrations

  (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

ในที่สุดฉันก็เอาชนะปัญหานี้ได้ดังนี้

(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

เรียกใช้คำสั่งนี้

sudo pip install mysql-python;

ตอนนี้คุณสามารถเรียกใช้คำสั่งของคุณ

python manage.py startapp filename;

0

ฉันพบสถานการณ์ที่คล้ายกันเช่นคุณที่ฉันใช้ python3.7 และ django 2.1 ใน virtualenv บน mac osx ลองเรียกใช้คำสั่ง:

pip install mysql-python
pip install pymysql

และแก้ไข__init__.pyไฟล์ในโฟลเดอร์โครงการของคุณและเพิ่มต่อไปนี้:

import pymysql

pymysql.install_as_MySQLdb()

จากนั้นเรียกใช้: python3 manage.py runserver หรือ python manage.py runserver

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.