0

mySQL 似乎启动并运行得很好。但是当我尝试将 MySQLdb 导入 python 时,我得到一个ImportError: ... Expected in: flat namespace. 我认为这与python有两个不同的版本有关(两个不同的目录,相同的版本)

操作系统:Mac 10.6.8

$ ls /Library/Frameworks/Python.framework/Versions/
7.2 Current

$ which python
/Library/Frameworks/Python.framework/Versions/Current/bin/python

$ echo $PATH
/Library/Frameworks/Python.framework/Versions/Current/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/X11/bin

$ easy_install MySQL-python
...
...
Using /Library/Frameworks/Python.framework/Versions/7.2/lib/python2.7/site-packages/MySQL_python-1.2.3-py2.7-macosx-10.5-i386.egg
...

$ mysql.server start
Starting MySQL
.. SUCCESS!

$ python manage.py runserver
...
...
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: dlopen(/Library/Frameworks/Python.framework/Versions/7.2/lib/python2.7/site-packages/MySQL_python-1.2.3-py2.7-macosx-10.5-i386.egg/_mysql.so, 2): Symbol not found: _mysql_affected_rows
  Referenced from: /Library/Frameworks/Python.framework/Versions/7.2/lib/python2.7/site-packages/MySQL_python-1.2.3-py2.7-macosx-10.5-i386.egg/_mysql.so
  Expected in: flat namespace
 in /Library/Frameworks/Python.framework/Versions/7.2/lib/python2.7/site-packages/MySQL_python-1.2.3-py2.7-macosx-10.5-i386.egg/_mysql.so

$ python
Enthought Python Distribution (EPD) free version -- www.enthought.com
Version: 7.2-2 (32-bit)

>>> import MySQLdb
...
...
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/7.2/lib/python2.7/site-packages/MySQL_python-1.2.3-py2.7-macosx-10.5-i386.egg/_mysql.so, 2): Symbol not found: _mysql_affected_rows
  Referenced from: /Library/Frameworks/Python.framework/Versions/7.2/lib/python2.7/site-packages/MySQL_python-1.2.3-py2.7-macosx-10.5-i386.egg/_mysql.so
  Expected in: flat namespace
 in /Library/Frameworks/Python.framework/Versions/7.2/lib/python2.7/site-packages/MySQL_python-1.2.3-py2.7-macosx-10.5-i386.egg/_mysql.so

因此,除了对 django 和 python 不熟悉之外,我对使用终端也很陌生,而且我不确定我在看什么。

但我可以说很明显:

  • 我有两个版本,7.2 和当前。
  • 如果我调用 python,它将调用“当前”版本。这是有道理的,它在 $PATH 中。
  • 但是,PATH 中还有一个 2.7 版(不是 7.2 版),我在安装 EDP 包时已将其删除。...我不完全了解 PATH 是什么或做什么,所以我不想开始改变事情
  • MySQL-python 安装在 7.2 版本
  • 无法运行服务器,因为没有必要的文件flat namespace并且它也在安装位置

有什么方法可以解开这些路径(如果这是问题的话)

先感谢您

4

1 回答 1

0

嗯......我认为它与python的“当前”和“7.2”版本没有任何关系。

完成后似乎已经修复了

pip uninstall MySQL-python
brew uninstall mysql
brew install mysql --universal
pip install MySQL-python

我不确定是否有所不同--universal或使用 pip install 而不是 easy_install

于 2012-05-28T08:12:57.027 回答