2010-05-24 7 views
2

J'ai particulièrement de la difficulté à installer le module MySQLdb (MySQL-python-1.2.3c1), pour me connecter à MySQL dans la pile MAMP. J'ai fait un certain nombre de choses comme la copie du répertoire mysql include et de la bibliothèque (y compris le plugin) depuis une nouvelle installation de mysql (version 5.1.47) vers celle de MAMP (version 5.1.37).Comment puis-je utiliser Django avec MySQL dans une pile MAMP?

Maintenant, le module MySQLdb construire et installer ne me donne pas d'erreur.

L'erreur se produit lorsque j'appelle 'import MySQLdb' du shell python (version 2.6).

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "build/bdist.macosx-10.6-universal/egg/MySQLdb/__init__.py", line 19, in <module> 

    File "build/bdist.macosx-10.6-universal/egg/_mysql.py", line 7, in <module> 
    File "build/bdist.macosx-10.6-universal/egg/_mysql.py", line 6, in __bootstrap__ 
ImportError: dlopen(/Users/rhenru/.python-eggs/MySQL_python-1.2.3c1-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so, 2): Symbol not found: _mysql_affected_rows 
    Referenced from: /Users/rhenru/.python-eggs/MySQL_python-1.2.3c1-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so 
    Expected in: flat namespace 
in /Users/rhenru/.python-eggs/MySQL_python-1.2.3c1-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so 

Une idée, que dois-je faire d'autre pour le faire fonctionner?

Merci un bouquet, Robert

========= Ajouter la réponse du système après avoir utilisé virtualenv comme suggéré par Hank Gay ci-dessous ...

(MyDjangoProject)MyMacPro:MyDjangoProject rhenru$ which python 
/Users/rhenru/Workspace/django/MyDjangoProject/bin/python 

Après avoir couru python dans virtualenv, MySQLdb importation:

>>> import MySQLdb 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "build/bdist.macosx-10.6-universal/egg/MySQLdb/__init__.py", line 19, in <module> 

    File "build/bdist.macosx-10.6-universal/egg/_mysql.py", line 7, in <module> 
    File "build/bdist.macosx-10.6-universal/egg/_mysql.py", line 6, in __bootstrap__ 
ImportError: dlopen(/Users/rhenru/.python-eggs/MySQL_python-1.2.3c1-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so, 2): Symbol not found: _mysql_affected_rows 
    Referenced from: /Users/rhenru/.python-eggs/MySQL_python-1.2.3c1-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so 
    Expected in: flat namespace 
in /Users/rhenru/.python-eggs/MySQL_python-1.2.3c1-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so 

import sys et sys.path

>>> import sys 
>>> print sys.path 
['', '/Users/rhenru/Workspace/django/MyDjangoProject/lib/python2.6/site-packages/distribute-0.6.10-py2.6.egg', '/Users/rhenru/Workspace/django/MyDjangoProject/lib/python2.6/site-packages/pip-0.7.1-py2.6.egg', '/Users/rhenru/Workspace/django/MyDjangoProject/lib/python26.zip', '/Library/Python/2.6/site-packages/PyXML-0.8.4-py2.6-macosx-10.6-universal.egg', '/Library/Python/2.6/site-packages/pydot-1.0.2-py2.6.egg', '/Library/Python/2.6/site-packages/pyparsing-1.5.2-py2.6.egg', '/Library/Python/2.6/site-packages/vobject-0.8.1c-py2.6.egg', '/Library/Python/2.6/site-packages/pytz-2010h-py2.6.egg', '/Library/Python/2.6/site-packages/MySQL_python-1.2.3c1-py2.6-macosx-10.6-universal.egg', '/Library/Python/2.6/site-packages/distribute-0.6.12-py2.6.egg', '/Library/Python/2.6/site-packages/pip-0.7.1-py2.6.egg', '/Users/rhenru/Workspace/django/MyDjangoProject/lib/python2.6', '/Users/rhenru/Workspace/django/MyDjangoProject/lib/python2.6/plat-darwin', '/Users/rhenru/Workspace/django/MyDjangoProject/lib/python2.6/plat-mac', '/Users/rhenru/Workspace/django/MyDjangoProject/lib/python2.6/plat-mac/lib-scriptpackages', '/Users/rhenru/Workspace/django/MyDjangoProject/Extras/lib/python', '/Users/rhenru/Workspace/django/MyDjangoProject/lib/python2.6/lib-tk', '/Users/rhenru/Workspace/django/MyDjangoProject/lib/python2.6/lib-old', '/Users/rhenru/Workspace/django/MyDjangoProject/lib/python2.6/lib-dynload', '/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6', '/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-darwin', '/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-tk', '/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac', '/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac/lib-scriptpackages', '/Users/rhenru/Workspace/django/MyDjangoProject/lib/python2.6/site-packages', '/Library/Python/2.6/site-packages', '/Library/Python/2.6/site-packages/PIL', '/Library/Python/2.6/site-packages/setuptools-0.6c11-py2.6.egg-info', '/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python', '/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/PyObjC', '/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/wx-2.8-mac-unicode'] 

Répondre

1

Comment installez-vous MySQL-Python? Je viens de tester dans un nouveau virtualenv et pip install mysql-python semble avoir fait l'affaire.

MISE À JOUR:

pip est un peu comme un gestionnaire de paquets pour les paquets Python.

Par défaut, pip est installé dans votre répertoire actuel site-packages, qui se trouve sur votre $PYTHONPATH. Cela permet à d'autres bibliothèques/applications (comme Django) d'y accéder. pip fonctionne également bien avec virtualenv (il devrait, Ian Bicking les a écrits les deux), qui est une bibliothèque astucieuse qui vous permet de bac à sable une application. C'est sympa car cela signifie que vous pouvez essayer de nouvelles choses sans polluer (ou même avoir besoin d'accéder en écriture) au répertoire global site-packages.

Il semble probablement comme Yak-rasage en ce moment, mais je dirais que ça vaut la peine de se lever pour accélérer le pip et virtualenv (vous pouvez aussi regarder dans virtualenvwrapper, mais nous allons sauter que pour l'instant c'est juste du sucre pour virtualenv). Cela conduira à un scénario de déploiement plus compliqué que de tout mettre dans le site-packages, mais pour le développement, ce n'est pas vraiment plus difficile, et il y a beaucoup de bons guides à déployer en utilisant un virtualenv.

je recommande quelque chose comme ce qui suit:

  1. curl -0 http://python-distribute.org/distribute_setup.py
  2. python distribute_setup.py
  3. easy_install pip
  4. pip install virtualenv
  5. virtualenv --distribute MyDjangoProject --no-site-packages
  6. cd MyDjangoProject
  7. source bin/activate (ce qui active le bac à sable virtualenv créé)
  8. pip install django mysql-python

À ce stade, vous devriez avoir une totalement fonctionnelle Django + MySQL installer (si je manquais les étapes, tout commentaire et je vais essayer de ajoutez-le). Vous pouvez démarrer votre projet Django comme ceci: django-admin.py startproject MyDjangoProject. cd dans le répertoire de votre projet, éditez votre fichier settings.py pour qu'il pointe vers votre base de données MySQL, et exécutez le serveur dev pour le tester comme ceci: ./manage.py runserver (vous devrez peut-être chmod u+x votre fichier manage.py). Voila! Vous devriez être en mesure d'accéder à votre site sur localhost:8000. Lorsque vous avez terminé de travailler sur le projet, vous pouvez simplement utiliser deactivate pour quitter le sandbox virtualenv. Essayez de ne pas tenir tout cela à l'encontre de Django: il s'agit en grande partie de bonnes pratiques pour travailler avec les bibliothèques Python. Vous pourriez vous débrouiller avec beaucoup moins, mais de cette façon, c'est plus reproductible et vous êtes moins susceptible de gâcher accidentellement l'une des dépendances de ce projet lorsque vous travaillez sur un projet différent.

+0

Salut Hank, Merci, mais je ne vous comprends pas, que voulez-vous dire par MySQL-Python? Si vous faites référence au connecteur, c'est ce que j'essaie d'installer maintenant. Et où lancez-vous pip installer mysql-python? quel est le système d'exploitation et est-ce un shell commmand? Je n'ai pas cette commande pip, devrais-je l'ajouter en premier? Merci, Robert –

+0

Merci Hank, je suis vos 8 étapes. J'ai obtenu le MyDjangoProject avec bin, include et lib à l'intérieur. J'essaie d'appeler bin/python et d'exécuter 'import MySQLdb' mais j'ai eu l'erreur similaire (comme ce que j'ai collé dans ma question). Ai-je oublié quelque chose? Merci beaucoup! –

+0

Que voyez-vous lorsque vous exécutez 'quel python'? Il devrait vous montrer le python dans le sous-répertoire 'bin'; Si ce n'est pas le cas, vous devrez probablement 'source bin/activate' et vérifiez à nouveau. En supposant qu'il en soit ainsi, lancez le REPL en tapant 'python', puis tapez' import MySQLdb' et collez le résultat exact maintenant. En outre, veuillez 'importer sys' et' print sys.path', et après la sortie ici aussi. –

0

J'ai eu ce problème et il est avéré être en raison d'une configuration errante: export VERSIONER_PYTHON_PREFER_32_BIT = yes Je ne me souviens pas ce que j'avais ce qui a permis de (certains package requis 32 bits), probablement liée à Google App Engine. Mais Définir à «non» résolu par des problèmes.

Sinon, je viens d'installer tout en utilisant homebrew et pip.