2009-12-14 8 views
9

Hubo algunas respuestas excelentes a esta pregunta, sin embargo, ahora están desactualizadas.Django + MySQL en Mac OS 10.6.2 Snow Leopard

he sido capaz de obtener el módulo instalado, pero "python manage.py runserver" falla con

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$ 

Del mismo modo, a partir de la cáscara de pitón:

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) 
>>> 

Usar MySQL-python -1.2.3c1 con setuptools-0.6c11-py2.6.egg

Cualquier ayuda sería apreciada.

+1

¿Ha actualizado su MySQL después de instalar MySQL-python? –

Respuesta

21

Finalmente resolví mi problema, por supuesto, el subconsciente y la ayuda consciente de las muchas publicaciones, blogs y registros de correo que he leído. Daría enlaces si pudiera recordar.

En pocas palabras, reinstalé TODO usando MacPorts.

Después de editar ~/.bash_profile y de comentar todas las modificaciones previas a $ {PATH}, descargué el dmg for Snow Leopard y ejecuté su instalación.

A continuación, se abrió el terminal y se ejecutó la actualización automática.

sudo port selfupdate 
sudo port install python26 

Esa segunda parte, la instalación de Python 2.6, tomó para siempre. Pero cuando se completó me impulsó con lo siguiente:

To fully complete your installation and make python 2.6 the default, please run 

sudo port install python_select 
sudo python_select python26 

me hicieron tanto y se fueron rápido.

Olvidé mencionar lo útil que es el comando 'búsqueda de puertos'. Busqué 'mysql' y similar para encontrar el tipo de letra después de 'instalar'. Pero procedí con la reinstalación tanto del cliente como del servidor para MySQL. Quizás hice esto en orden inverso, pero el resultado final funcionó bien.

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. 

Así que, naturalmente:

sudo port install mysql5-server 

Me encanta la forma en la que muchas de las instalaciones macports le dan información sobre qué hacer a continuación.Al final de la instalación del servidor, se dijo lo siguiente:

****************************************************** 
* In order to setup the database, you might want to run 
* sudo -u _mysql mysql_install_db5 
* if this is a new install 
****************************************************** 

que era una nueva instalación para mí (no tenía ningún esquemas locales). Para completar, y para mi propia referencia, aquí está la salida de ejecutar ese comando:

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/ 

Casi terminado. A principios de mi 'search'ing puerto me encontré con este interesante puerto:

py26-MySQL 1.2.2 @ (pitón, devel, bases de datos) interfaz de Python a mysql

Con mucha mucha esperanza, que esto proporcionarme el paquete MySQLdb, lo instalé (y lo hizo).

sudo port install py26-mysql 

Epílogos que manipuló el intérprete de Python intentó importar MySQLdb, la misma cosa en mi camino todo este tiempo.

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 
>>> 

Una advertencia, pero funcionó !!

Sólo una cosa más:

sudo port install py26-django 

Después de todo esto que finalmente fue capaz de poner encima de mi proyecto Django y de forma remota conectarse al servidor MySQL de mi empresa !! Puede que no haya sido necesario reinstalar Django usando MacPorts, pero no iba a arriesgarme a complicaciones.

+3

'python_select' parece estar desactualizado. Utilice 'sudo port select python python26' – hughes

1

Esto sucede cuando tiene un software mixto de 32 y 64 bits.

Básicamente, para Snow Leopard, debe instalar el paquete MySQL de 64 bits (que todavía aparece como 10.5, pero eso no es problema), después de eso, vuelva a instalar fácilmente python-mysql. Todo funcionará.

+0

Instalé mysql-5.1.41-osx10.5-x86_64.dmg De la carpeta MySQL-python-1.2.3c1 ejecuté: sudo easy_install. Dio varias advertencias como: el archivo no es de arquitectura requerida –

4

me escribió una entrada de blog hace unos meses después de mi exitosa instalación de MySQL en Snow Leopard:

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

Si usted sigue estos pasos, se debe (en teoría) arreglar el problema (que suena como es causado por una mezcla de software de 32 bits y 64 bits).

Por cierto, no estoy tratando de auto promover aquí; el texto en la publicación del blog es básicamente lo que habría publicado aquí, y estoy tratando de aplicar DRY a más áreas de mi vida :)

+0

Su enlace está muerto .. – Totic

Cuestiones relacionadas