gpt4 book ai didi

python - 如何在 MAMP 堆栈中将 Django 与 MySQL 一起使用?

转载 作者:行者123 更新时间:2023-11-29 03:14:29 26 4
gpt4 key购买 nike

我特别难以安装 MySQLdb 模块 (MySQL-python-1.2.3c1),以连接到 MAMP 堆栈中的 MySQL。我做了很多事情,例如将 mysql 包含目录和库(包括插件)从全新安装的 mysql(版本 5.1.47)复制到 MAMP(版本 5.1.37)中。

现在,MySQLdb 模块构建和安装不会给我错误。

当我从 python shell(版本 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

知道吗,我还需要做些什么才能让它发挥作用?

非常感谢,罗伯特

=========按照下面 Hank Gay 的建议,在使用 virtualenv 后添加系统响应...

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

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

最佳答案

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

更新:

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

默认情况下,pip 安装到您当前的 site-packages 目录,该目录位于您的 $PYTHONPATH 上。这允许其他库/应用程序(如 Django)访问它。 pip 也适用于 virtualenv (它应该;Ian Bicking 写了它们),这是一个漂亮的库,可以让您对应用程序进行沙箱处理。这很好,因为这意味着您可以尝试新事物而不会污染(甚至不需要写入权限)全局 site-packages 目录。

现在看起来像是在剃牦牛毛,但我要说的是,在 pipvirtualenv 上加快速度是值得的(您可能还想要查看 virtualenvwrapper ,但我们暂时跳过它;它只是 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 数据库,然后运行开发服务器来测试它,如下所示:./manage.py runserver(您可能需要 chmod u+x 您的 manage.py 文件)。瞧!您应该能够在 localhost:8000 上访问您的网站。完成项目后,您可以使用 deactivate 退出 virtualenv 沙箱。

尽量不要将所有这些都与 Django 对立:其中很多只是使用 Python 库的最佳实践。您可以少很多,但这样它的可重现性更高,并且您在处理其他项目时不太可能不小心弄乱该项目的依赖项之一。

关于python - 如何在 MAMP 堆栈中将 Django 与 MySQL 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2900088/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com