如何在OSX 10.6中将MySQLdb与Python和Django结合使用?

如何在OSX 10.6中将MySQLdb与Python和Django结合使用?,python,mysql,django,virtualenv,virtualenvwrapper,Python,Mysql,Django,Virtualenv,Virtualenvwrapper,对于OSX 10.6用户来说,这是一个经常讨论的问题,但我还没有找到一个有效的解决方案。以下是我的设置: Python 2.6.1 64位 Django 1.2.1 MySQL 5.1.47 osx10.6 64位 我创建了一个没有站点包的VirtualVWrapper,然后安装了Django。激活virtualenv并运行python manage.py syncdb时,出现以下错误: Traceback (most recent call last): File "manage.py", l

对于OSX 10.6用户来说,这是一个经常讨论的问题,但我还没有找到一个有效的解决方案。以下是我的设置:

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

我创建了一个没有站点包的VirtualVWrapper,然后安装了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
回溯(最近一次呼叫最后一次):
文件“manage.py”,第11行,在
执行\u管理器(设置)
文件“/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site packages/django/core/management/_init__.py”,第438行,在执行管理器中
utility.execute()
文件“/Users/joerobinson/.virtualenvs/dj_-tut/lib/python2.6/site-packages/django/core/management/_-init__.py”,执行中第379行
self.fetch_命令(子命令)。从_argv(self.argv)运行_
文件“/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site packages/django/core/management/_init__.py”,第257行,在fetch_命令中
klass=加载命令类(应用程序名称,子命令)
文件“/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site packages/django/core/management/_init__.py”,第67行,在load_命令类中
模块=导入模块(“%s.management.commands.%s%”(应用程序名称,名称))
文件“/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site packages/django/utils/importlib.py”,第35行,在导入模块中
__导入(名称)
文件“/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site packages/django/core/management/commands/syncdb.py”,第7行,在
从django.core.management.sql导入自定义\u sql\u for\u模型,发出\u post\u sync\u信号
文件“/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site packages/django/core/management/sql.py”,第5行,在
从django.contrib.contenttypes导入泛型
文件“/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site packages/django/contrib/contenttypes/generic.py”,第6行,在
从django.db导入连接
文件“/Users/joerobinson/.virtualenvs/dj_-tut/lib/python2.6/site-packages/django/db/_-init__;.py”,第75行,在
连接=连接[默认\u DB\u别名]
文件“/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site packages/django/db/utils.py”,第91行,在u getitem中__
后端=加载\u后端(db['ENGINE'])
文件“/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site packages/django/db/utils.py”,第32行,在load_后端
返回导入_模块('.base',后端_名称)
文件“/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site packages/django/utils/importlib.py”,第35行,在导入模块中
__导入(名称)
文件“/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site packages/django/db/backends/mysql/base.py”,第14行,在
raise配置不正确(“加载MySQLdb模块时出错:%s”%e)
django.core.exceptions.ImpropertlyConfigured:加载MySQLdb模块时出错:没有名为MySQLdb的模块
我也安装了适配器,但没有用(可能是安装不当?)


以前有人处理过这个问题吗?

这个问题是由于MySQL for Python适配器安装不完整/不正确造成的。具体地说,我必须编辑mysql_配置文件的路径以指向/usr/local/mysql/bin/mysql_配置——本文将对此进行更详细的讨论:

我遇到了相同的错误,pip install mysql python为我解决了这个问题

备用安装:

  • 如果您没有pip,
    easy\u安装MySQL python
    应该可以工作
  • 如果python是由打包系统管理的,则可能必须使用 该系统(例如,sudo apt get install…)
下面,Soli指出,如果您收到以下错误:

环境错误:未找到mysql\u配置

。。。然后,您会遇到进一步的系统依赖性问题。解决方法因系统而异,但对于Debian衍生系统:


sudo-apt-get-install-python-mysqldb

运行Ubuntu时,我必须执行以下操作:

sudo apt-get install python-mysqldb

我在OSX 10.6.6上也遇到了同样的问题。但仅仅在终端上安装一个简单的mysql-python
easy\u并不能解决这个问题,因为另一个问题随之而来:

错误:命令“gcc-4.2”失败,退出状态为1

显然,这个问题是在从XCode3(OSX 10.6自带)升级到XCode4之后出现的。此较新版本取消了对构建ppc arch的支持。如果情况相同,请在安装mysql python之前尝试以下操作

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

非常感谢奈德·戴利的这一解决方案

除了其他答案之外,以下内容帮助我完成了mysql python的安装:

在Ubuntu上

apt-get install libmysqlclient-dev
apt-get install python-dev
pip install mysql-python
如果您没有适当的权限,请不要忘记在命令开头添加“sudo”

pip install mysql-python
引发了一个错误:

环境错误:未找到mysql\u配置


已修复该问题。

mysql\u config
必须位于路径上。在Mac上,做什么

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

我升级到OSX Mavericks和Pycharm 3,开始出现这个错误,我使用了pip和easy install,出现了错误:

命令“/usr/bin/clang”失败,退出状态为1

所以我需要更新到Xcode 5,并再次尝试使用pip进行安装

pip install mysql-python

这解决了所有的问题。

以下操作对我来说非常有效,运行的是Ubuntu 13.10 64位:

sudo apt-get install libmysqlclient-dev
sudo apt-get install python-dev
现在,导航到您的virtualenv(例如env文件夹)并执行以下操作:

sudo ./bin/pip install mysql-python
import pymysql

pymysql.install_as_MySQLdb()
事实上,我在另一个问题中找到了答案,我在下面引用它:

如果您使用--no site packages开关创建了virtualenv (默认设置),然后是系统范围内安装的附加组件,如MySQLdb 不包括在虚拟环境包中

您需要使用随安装的pip命令安装MySQLdb 虚拟的。使用bin激活virtualenv/激活 脚本,或使用virtualenv中的bin/pip安装 MySQLdb库也是本地的

或者,使用系统站点包创建新的virtualenv 通过使用
sudo yum install mysql-devel
sudo yum install python-devel
pip install mysql-python
export PYTHONPATH="$PYTHONPATH:/usr/local/lib/pythonx.x/site-packages/"
brew install mysql-connector-c 
pip install MySQL-python
virtualenv -p python3.5 env/test
pip install pymysql
pip install django
+ try:
+     import pymysql
+     pymysql.install_as_MySQLdb()
+ except:
+     pass
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'foobar_db',
        'USER': 'foobaruser',
        'PASSWORD': 'foobarpwd',
    }
}
pip uninstall mysql-python
pip install mysql-python
sudo apt-get install python3-mysqldb
xcode-select --install
  (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$ 
sudo pip install mysql-python;
python manage.py startapp filename;
pip install mysql-python
pip install pymysql
import pymysql

pymysql.install_as_MySQLdb()