如何在OSX 10.6中使用MySQLdb与Python和Django?
这是一个在OSX 10.6用户中讨论得很热烈的问题,但我一直找不到有效的解决办法。我的环境设置如下:
Python 2.6.1 64位
Django 1.2.1
MySQL 5.1.47 osx10.6 64位
我创建了一个虚拟环境,使用了--no-site-packages选项,然后安装了Django。当我激活这个虚拟环境并运行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 for Python这个适配器,但没有用(可能是我安装得不对?)。
有没有人遇到过这个问题?
21 个回答
62
我在使用Ubuntu系统时,需要执行以下操作:
sudo apt-get install python-mysqldb
330
我也遇到过同样的错误,使用 pip install MySQL-python
这个命令解决了我的问题。
还有其他安装方法:
- 如果你没有安装 pip,可以试试
easy_install MySQL-python
。 - 如果你的 Python 是通过某个包管理系统来管理的,你可能需要用那个系统来安装(比如
sudo apt-get install ...
)。
下面,Soli 提到如果你看到以下错误:
EnvironmentError: mysql_config not found
... 那么你可能还有其他系统依赖的问题。解决这个问题的方法会因系统而异,但对于基于 Debian 的系统,你可以使用:
sudo apt-get install python-mysqldb
7
这个问题是因为MySQL的Python适配器安装不完整或者不正确导致的。具体来说,我需要修改mysql_config文件的路径,让它指向/usr/local/mysql/bin/mysql_config。这个问题在这篇文章中有更详细的讨论:http://dakrauth.com/blog/entry/python-and-django-setup-mac-os-x-leopard/