Làm cách nào để sử dụng MySQLdb với Python và Django trong OSX 10.6?


259

Đây là một vấn đề được thảo luận nhiều cho người dùng OSX 10.6, nhưng tôi chưa thể tìm ra giải pháp hiệu quả. Đây là thiết lập của tôi:

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

Tôi tạo một virtualenvwrapper với các gói --no-site, sau đó cài đặt Django. Khi tôi kích hoạt virtualenv và chạy python Manage.txt syncdb, tôi gặp lỗi này:

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

Tôi cũng đã cài đặt bộ điều hợp MySQL cho Python , nhưng không có kết quả (có thể tôi đã cài đặt nó không đúng cách?).

Bất cứ ai đã giải quyết điều này trước đây?


5
Vấn đề này là kết quả của việc cài đặt bộ điều hợp MySQL cho Python không đầy đủ / không chính xác. Cụ thể, tôi đã phải chỉnh sửa đường dẫn đến tệp mysql_config để trỏ đến / usr / local / mysql / bin / mysql_config - đã thảo luận chi tiết hơn trong bài viết này: dakrauth.com/blog/entry/,
Joe

chỉ cần làm điều này ---------- apt-get install python-mysqldb
Shadow0359

pip install mysqlđã làm cho tôi!
Ivan Carrasco Quiroz

Câu trả lời:


330

Tôi đã có cùng một lỗi và pip install MySQL-pythongiải quyết nó cho tôi.

Cài đặt thay thế:

  • Nếu bạn không có pip, easy_install MySQL-pythonnên làm việc.
  • Nếu con trăn của bạn được quản lý bởi một hệ thống đóng gói, bạn có thể phải sử dụng hệ thống đó (ví dụ sudo apt-get install ...)

Dưới đây, Soli lưu ý rằng nếu bạn nhận được lỗi sau:

EnvironmentError: mysql_config not found

... Sau đó, bạn có một vấn đề phụ thuộc hệ thống hơn nữa. Việc giải quyết điều này sẽ thay đổi tùy theo hệ thống, nhưng đối với các hệ thống có nguồn gốc từ Debian:

sudo apt-get install python-mysqldb


2
vâng, tôi đã sử dụng Synaptic Gói Manager để tìm kiếm mysql-python và cài đặt và nó hoạt động rất tốt. Cảm ơn.
Tomasz Iniewicz

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

20
$ mysql_configChương trình 'mysql_config' hiện chưa được cài đặt. Bạn có thể cài đặt nó bằng cách t yping:sudo apt-get install libmysqlclient-dev
anders

1
nên thêm câu trả lời này vào tài liệu chính thức của django
Siwei Shen

1
Tôi nghĩ tôi là người duy nhất mắc lỗi này 'Lệnh python setup.py egg_info không thành công với mã lỗi 1' sau khi chạy 'pip cài đặt MySQL-python'
RicardoGonzales

62

Chạy Ubuntu, tôi phải làm:

sudo apt-get install python-mysqldb

8
Anh ta đang chạy OS X, không phải Ubuntu
Facundo Casco

8
Ngoài ra, điều đó sẽ không đưa nó vào virtualenv
Twirrim

58

Thêm vào các câu trả lời khác, những điều sau đây đã giúp tôi hoàn thành việc cài đặt mysql-python:

virtualenv, mysql-python, pip: có ai biết làm thế nào không?

Trên Ubuntu ...

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

Đừng quên thêm 'sudo' vào đầu các lệnh nếu bạn không có quyền thích hợp.


1
chìa khóa là apt-get install python-dev. Không biết tại sao tôi lại cài đặt phiên bản dev của python 2 năm sau, nhưng nó hoạt động cho đến ngày hôm nay bằng cách sử dụng python 2.7.3. Chỉ 3 giờ lãng phí.
dùng798719

23

Hãy thử điều này các lệnh dưới đây. Họ làm việc cho tôi:

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

Phương pháp này đã giải quyết vấn đề của tôi. Tất cả các đề xuất khác trước khi gửi cho tôi một thông báo lỗi vềCommand "python setup.py egg_info" failed with error code 1 in /private/var/folders/r8/c_tscq492sn641w5vtvqcvkw0000gp/T/pip-build-JYY1du/MySQL-python
Tìm hiểu

2
Cảm ơn rất nhiều, hãy thử tất cả đã nêu ở trên. Không ai làm việc trên OSX 10.11 mong đợi điều này
Paullo

1
@LearnAWK nó không hoạt động. Tôi vẫn gặp lỗi Lệnh "python setup.py egg_info" không thành công với mã lỗi 1 in / private / var / thư mục / 3m / 97mbsh5x2bnghhk55130bh_h0000gn / T / pip-build-FFU1vL / MySQL-python /
Stony

19

mysql_configphải trên con đường Trên máy Mac

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

4
Tôi đã thử điều này và vẫn nhận được cùng một lỗi: 'nâng cao không đúng cách ("Lỗi khi tải mô-đun MySQLdb:% s"% e) django.core.exceptions.ImproperlyConfigured: Lỗi khi tải mô-đun MySQLdb: Không có mô-đun có tên
MySQLdb

14
pip install mysql-python

đưa ra một lỗi:

Môi trườngError: không tìm thấy mysql_config

sudo apt-get install python-mysqldb

đã khắc phục sự cố.


11

Làm thế nào tôi có nó làm việc:

virtualenv -p python3.5 env/test

Sau khi tìm nguồn cung ứng env của tôi:

pip install pymysql
pip install django

Sau đó, tôi đã chạy startproject và bên trong Manage.txt, tôi đã thêm cái này:

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

Ngoài ra, cập nhật cài đặt bên trong này:

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

Tôi cũng đã configparser==3.5.0cài đặt trong virtualenv của mình, không chắc điều đó có bắt buộc hay không ...

Hy vọng nó giúp,


8

Phần sau hoạt động hoàn hảo với tôi, chạy Ubuntu 13.10 64-bit:

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

Bây giờ, điều hướng đến virtualenv của bạn (chẳng hạn như thư mục env) và thực hiện như sau:

sudo ./bin/pip install mysql-python

Tôi thực sự tìm thấy giải pháp trong một câu hỏi riêng biệt và tôi đang trích dẫn nó dưới đây:

Nếu bạn đã tạo virtualenv bằng khóa chuyển đổi --no-site-gói (mặc định), thì các bổ sung được cài đặt trên toàn hệ thống như MySQLdb sẽ không được bao gồm trong các gói môi trường ảo.

Bạn cần cài đặt MySQLdb với lệnh pip được cài đặt với virtualenv. Hoặc kích hoạt virtualenv với tập lệnh bin / kích hoạt hoặc sử dụng bin / pip từ bên trong virtualenv để cài đặt thư viện MySQLdb cục bộ.

Ngoài ra, tạo một virtualenv mới với các gói trang web hệ thống được bao gồm bằng cách sử dụng chuyển đổi --system-site-gói.

Tôi nghĩ rằng điều này cũng nên làm việc với OSX. Vấn đề duy nhất là nhận được một lệnh tương đương để cài đặt libmysqlclient-devpython-devvì chúng cần thiết để biên dịch mysql-pythontôi đoán.

Hi vọng điêu nay co ich.


2
Cảm ơn! Bạn cần cài đặt MySQLdb với lệnh pip được cài đặt với virtualenv. - Giúp đỡ
dobs

Cảm ơn. sudo ./bin/pip install mysql-pythonrất hữu ích!
theblackpearl

8

Hãy thử điều này: Điều này giải quyết vấn đề cho tôi.

Pip cài đặt MySQL-python


2
Cảm ơn. Điều này đã làm việc để khắc phục sự cố cho tôi với heroku và cleardb: đốt cháy trên django 1.7.1.
Ryan Walton

7

Vấn đề này là kết quả của việc cài đặt bộ điều hợp MySQL cho Python không đầy đủ / không chính xác. Cụ thể, tôi đã phải chỉnh sửa đường dẫn đến tệp mysql_config để trỏ đến / usr / local / mysql / bin / mysql_config - đã thảo luận chi tiết hơn trong bài viết này: http://dakrauth.com/blog/entry/python-and- django-setup-mac-os-x-da báo /


7

sudo apt-get install python-mysqldb hoạt động hoàn hảo trong Ubuntu

pip install mysql-pythongây ra lỗi môi trường


5

Điều này làm việc cho Red Hat Enterprise Linux Server phát hành 6.4

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

CentOS 7, tùy chọn 1 : yum install MySQL-python; tùy chọn 2 (nếu sử dụng virtualenv) : yum install mysql-devel; venv/bin/pip install MySQL-python.
hudolejev

4

Bạn có thể cài đặt như pip install mysqlclient


cái này đã sắp xếp nó cho tôi, vì tôi tin rằng đây là phiên bản để sử dụng cho Python 3
A Star

3

Tôi đã thực hiện nâng cấp lên OSX Mavericks và Pycharm 3 và bắt đầu gặp lỗi này, tôi đã sử dụng pip và dễ dàng cài đặt và gặp lỗi:

lệnh '/ usr / bin / clang' không thành công với trạng thái thoát 1.

Vì vậy, tôi cần cập nhật lên Xcode 5 và thử lại để cài đặt bằng pip.

pip install mysql-python

Điều đó khắc phục tất cả các vấn đề.


2

Lỗi được nêu ở đây là trong việc nhập mô-đun python. Điều này có thể được giải quyết bằng cách thêm thư mục gói python vào biến môi trường $ PYTHONPATH trên OS X. Vì vậy, chúng ta có thể thêm lệnh sau vào tệp .bash_profile:

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

* thay thế xx bằng phiên bản python bạn đang sử dụng


Tôi đã thử cách này: stackoverflow.com/questions/25459386/ nhưng không thành công, điều này đã cứu tôi .. (Y)
Kamaldeep singh Bhatia

2

Nếu bạn đang sử dụng python3, thì hãy thử điều này (Hệ điều hành của tôi là Ubuntu 16.04):

sudo apt-get install python3-mysqldb

2

pipkhông hoạt động với tôi trên hệ thống windows 8 64 bit. easy_install mysql-pythonlàm việc cho tôi Bạn có thể sử dụng easy_installđể tránh xây dựng nhị phân trên windows nếu pip không hoạt động.


1

Tôi gặp vấn đề tương tự trên OSX 10.6.6. Nhưng chỉ một đơn giản easy_install mysql-pythontrên thiết bị đầu cuối đã không giải quyết nó như một trục trặc khác theo sau:

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

Rõ ràng, vấn đề này phát sinh sau khi nâng cấp từ XCode3 (vốn được vận chuyển với OSX 10.6) lên XCode4. Ver mới hơn này loại bỏ hỗ trợ để xây dựng vòm ppc. Nếu trường hợp tương tự, hãy thử làm như saueasy_install mysql-python

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

Rất cám ơn Ned Deily cho giải pháp này. Kiểm tra tại đây


0

Đối với tôi, vấn đề đã được giải quyết bằng cách cài đặt lại mysql-python

pip uninstall mysql-python
pip install mysql-python


0

Tôi đã khắc phục vấn đề tương tự bằng cách cài đặt MySQL-pythonthư viện bằng pip . Bạn có thể thấy thông báo được hiển thị trên bảng điều khiển của tôi khi tôi lần đầu tiên thay đổi cài đặt cơ sở dữ liệu của mình trong settings.py và thực hiện lệnh makemigations (Giải pháp theo thông báo bên dưới, chỉ cần nhìn thấy điều đó).

  (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

Cuối cùng tôi đã khắc phục vấn đề này như sau:

(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

Chạy lệnh này

sudo pip install mysql-python;

bây giờ bạn có thể chạy lệnh của bạn.

python manage.py startapp filename;

0

Tôi đã gặp các tình huống tương tự như của bạn rằng tôi đang sử dụng python3.7 và django 2.1 trong virtualenv trên mac osx. Hãy thử chạy lệnh:

pip install mysql-python
pip install pymysql

Và chỉnh sửa __init__.pytập tin trong thư mục dự án của bạn và thêm vào sau:

import pymysql

pymysql.install_as_MySQLdb()

Sau đó chạy: python3 manage.py runserver hoặc python manage.py runserver

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.