如何在MAMP堆栈中使用Django和MySQL?

2024-09-28 23:19:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我在安装MySQLdb模块(MySQL-python-1.2.3c1)时遇到了困难,无法连接到MAMP堆栈中的MySQL。 我做了很多事情,比如将mysql的include目录和库(包括插件)从新安装的mysql(版本5.1.47)复制到MAMP内部的MAMP(版本5.1.37)。在

现在,MySQLdb模块的构建和安装没有给我错误。在

当我从pythonshell(2.6版)调用'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

你知道吗,我还需要做些什么才能让它生效?在

谢谢大家, 罗伯特

在========= 添加系统响应后,使用virtualenv后,汉克盖伊建议如下。。。在

^{pr2}$

在virtualenv中运行python之后,导入MySQLdb:

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

Tags: djangoinegglibpackageslibrarymysqlsite
2条回答

我遇到了这个问题,结果是由于错误的配置: export VERSIONER_PYTHON_PREFER_32_BIT=是 我不记得我启用这个功能是为了什么(一些需要32位的包),可能与googleappengine有关。但把它设为“否”就可以解决问题了。在

否则我就用自制软件和pip安装了所有的东西。在

如何安装MySQL-Python?我刚刚在一个新的virtualenv中进行了测试,pip install mysql-python似乎已经做到了。在

更新:

pip有点像Python包的包管理器。在

默认情况下,pip安装到当前的site-packages目录中,该目录位于$PYTHONPATH上。这允许其他库/应用程序(如Django)访问它。pip也可以很好地与{a3}配合使用(应该是这样;伊恩·比金同时编写了这两个库),这是一个很好的库,可以让您对应用程序进行沙箱处理。这很好,因为它意味着您可以尝试新的东西而不会污染(甚至不需要对全局site-packages目录的写访问权)。在

可能现在看起来像是在刮牦牛,但我要说的是,在pip和{}上加快速度是值得的(你可能还想研究一下{a4},但我们暂时跳过它;它只是virtualenv的糖)。这将导致一个比将所有内容都放在全局site-packages中更复杂的部署场景,但对于开发来说,这其实并不难,而且有很多关于使用virtualenv进行部署的好指南。在

我推荐如下:

  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(这将激活virtualenv创建的沙盒)
  8. pip install django mysql-python

现在,您应该已经安装了一个功能完全正常的Django+MySQL(如果我遗漏了任何步骤,只需注释一下,我将尝试将其添加进来)。您可以这样启动Django项目:django-admin.py startproject MyDjangoProjectcd在项目的目录中,编辑settings.py文件以指向MySQL数据库,然后运行dev server来测试它,如下所示:./manage.py runserver(您可能需要chmod u+x您的manage.py文件)。喂!您应该能够访问localhost:8000上的站点。完成项目后,您可以使用deactivate退出virtualenv沙盒。在

尽量不要把这些都放在Django上:很多都是使用Python库的最佳实践。你可以用更少的钱过日子,但这样做更具可复制性,而且你不太可能在处理另一个项目时不小心弄乱这个项目的一个依赖项。在

相关问题 更多 >