Django + MySQL на Mac OS 10.6.2 Snow Leopard

Уже были некоторые превосходные ответы на этот вопрос, однако, они теперь устарели.

Я смог установить модуль, но "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:

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

Любая справка ценилась бы.

9
задан Jon Seigel 28 March 2010 в 17:57
поделиться

3 ответа

Я, в конечном счете, решил свою собственную проблему, конечно, с помощью подсознательной и сознательной помощи из множества постов, блогов и почтовых журналов, которые я прочитал. Я бы дал ссылки, если бы я мог помнить.

В двух словах, я переустановил EVERYTHING с помощью MacPorts.

После редактирования ~/.bash_profile и комментирования всех предыдущих модификаций ${PATH}, я скачал dmg для 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' и тому подобное, чтобы найти вещь, которую нужно набрать после 'установки'. Но я переустановил и клиента, и сервер для 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

Мне нравится, как так много установок макропортов дают вам обратную связь о том, что делать дальше. В конце установки сервера было сказано следующее:

******************************************************
* 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). Python интерфейс к mysql

С большой, большой надеждой, что это предоставит мне пакет MySQLdb, я установил его (и он это сделал).

sudo port install py26-mysql

Afterwords я запустил питоновский интерпретатор пытался импортировать 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 моей компании!!!! Возможно, не было необходимости переустанавливать Django с помощью MacPorts, но я не собирался рисковать осложнениями.

21
ответ дан 4 December 2019 в 08:15
поделиться

Несколько месяцев назад после успешной установки MySQL на Snow Leopard я написал сообщение в блоге:

http://jboxer.com/2009/09/installing-mysql-on- snow-leopard /

Если вы выполните эти шаги, это должно (теоретически) решить вашу проблему (которая звучит так, как будто она вызвана сочетанием 32-битного и 64-битного программного обеспечения).

Кстати, я ' я не пытаюсь здесь заниматься саморекламой; текст сообщения в блоге - это в основном то, что я бы разместил здесь, и я пытаюсь применить DRY к большему количеству областей моей жизни :)

4
ответ дан 4 December 2019 в 08:15
поделиться

Это происходит, когда вы смешали 32- и 64-битное программное обеспечение.

По сути, для Snow Leopard вам нужно установить 64-битный пакет MySQL (который по-прежнему указан как 10.5, но это не проблема), после чего снова выполните простую установку python-mysql. Все будет работать.

1
ответ дан 4 December 2019 в 08:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: