这个问题已经有了一些很好的答案,然而,它们现在已经过时了。
我已经能够安装模块,但是“python manage.py runserver”失败并且
iMac:myproject drhoden$ python manage.py runserver
Validating models...
Unhandled exception in thread started by <function inner_run at 0x10496f0>
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/core/management/commands/runserver.py", line 48, in inner_run
self.validate(display_num_errors=True)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/core/management/base.py", line 249, in validate
num_errors = get_validation_errors(s, app)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/core/management/validation.py", line 22, in get_validation_errors
from django.db import models, connection
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/db/__init__.py", line 41, in <module>
backend = load_backend(settings.DATABASE_ENGINE)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/db/__init__.py", line 17, in load_backend
return import_module('.base', 'django.db.backends.%s' % backend_name)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/db/backends/mysql/base.py", line 13, in <module>
raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: dynamic module does not define init function (init_mysql)
^CiMac:segisys drhoden$
同样,来自python shell:
iMac:myproject drhoden$ python
Python 2.6.4 (r264:75821M, Oct 27 2009, 19:48:32)
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import MySQLdb
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "build/bdist.macosx-10.3-fat/egg/MySQLdb/__init__.py", line 19, in <module>
File "build/bdist.macosx-10.3-fat/egg/_mysql.py", line 7, in <module>
File "build/bdist.macosx-10.3-fat/egg/_mysql.py", line 6, in __bootstrap__
ImportError: dynamic module does not define init function (init_mysql)
>>>
将MySQL-python-1.2.3c1与setuptools-0.6c11-py2.6.egg一起使用
任何帮助都将不胜感激。
答案 0 :(得分:21)
我最终解决了我自己的问题,当然,我读过的许多帖子,博客和邮件日志中的潜意识和有意识的帮助。如果我记得,我会给出链接。
简而言之,我使用MacPorts重新安装了一切。
编辑〜/ .bash_profile并注释掉所有以前对$ {PATH}的修改后,我下载了dmg for Snow Leopard并完成了其安装。
然后打开终端并运行自我更新。
sudo port selfupdate
sudo port install python26
第二部分,安装Python 2.6,永远。但是当它完成时它提示我以下内容:
To fully complete your installation and make python 2.6 the default, please run
sudo port install python_select
sudo python_select python26
我做了两件事他们走得很快。
我忘了提一下方便的'端口搜索'命令。我搜索了'mysql',类似于在'install'之后找到要输入的东西。但我继续为MySQL重新安装客户端和服务器。也许我是以相反的顺序做到这一点,但最终的结果很好。
sudo port install mysql5
...
---> Installing mysql5 @5.1.41_0
The MySQL client has been installed.
If you also want a MySQL server, install the mysql5-server port.
很自然地:
sudo port install mysql5-server
我喜欢这么多的macports安装程序如何为您提供有关下一步操作的反馈。在服务器安装结束时,它说了以下内容:
******************************************************
* In order to setup the database, you might want to run
* sudo -u _mysql mysql_install_db5
* if this is a new install
******************************************************
这是我的新安装(没有任何本地架构)。为了完整性,以及我自己的参考,这是运行该命令的输出:
Installing MySQL system tables...
OK
Filling help tables...
OK
To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/opt/local/lib/mysql5/bin/mysqladmin -u root password 'new-password'
/opt/local/lib/mysql5/bin/mysqladmin -u root -h iMac.local password 'new-password'
Alternatively you can run:
/opt/local/lib/mysql5/bin/mysql_secure_installation
which will also give you the option of removing the test
databases and anonymous user created by default. This is
strongly recommended for production servers.
See the manual for more instructions.
You can start the MySQL daemon with:
cd /opt/local ; /opt/local/lib/mysql5/bin/mysqld_safe &
You can test the MySQL daemon with mysql-test-run.pl
cd /opt/local/mysql-test ; perl mysql-test-run.pl
Please report any problems with the /opt/local/lib/mysql5/bin/mysqlbug script!
The latest information about MySQL is available at http://www.mysql.com/
Support MySQL by buying support/licenses from http://shop.mysql.com/
几乎完成了。在我的“端口搜索”早期,我遇到了这个有趣的端口:
py26-mysql @ 1.2.2(python,devel,databases) mysql的Python接口
非常希望这会为我提供MySQLdb包,我安装了它(它确实如此)。
sudo port install py26-mysql
后来我开始使用python解释器尝试导入MySQLdb,这一直是我的方式。
iMac:~ drhoden$ python
Python 2.6.4 (r264:75706, Dec 15 2009, 18:00:14)
[GCC 4.2.1 (Apple Inc. build 5646) (dot 1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import MySQLdb
/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/MySQLdb/__init__.py:34: DeprecationWarning: the sets module is deprecated from sets import ImmutableSet
>>>
警告,但它有效!!
还有一件事:
sudo port install py26-django
在完成所有这些之后,我终于能够启动我的Django项目并远程连接到我公司的MySQL服务器!可能没有必要使用MacPorts重新安装Django,但我不会冒险并发症。
答案 1 :(得分:4)
几个月前,我在Snow Leopard上成功安装MySQL后写了一篇博文:
http://jboxer.com/2009/09/installing-mysql-on-snow-leopard/
如果您按照这些步骤操作,它(理论上)应该解决您的问题(这听起来像是由32位和64位软件混合引起的)。
顺便说一下,我不是想在这里自我推销;博客文章中的文字基本上就是我在这里发布的内容,我正在尝试将DRY应用到我生活中的更多领域:)
答案 2 :(得分:1)
当您使用32位和64位混合软件时会发生这种情况。
基本上,对于Snow Leopard,你需要安装MySQL 64bit软件包(它仍然列为10.5,但这没有问题),之后再轻松安装python-mysql。一切都会奏效。