MySQLdb和Python ImportError

Xen*_*ogy 5 python mysql homebrew pip mysql-python

我不能为我的生活把这一点弄清楚.我整天都在网上搜索,所有的资源似乎都过时了.从我可以告诉我的MySQLdb和Python一起玩得很好是相当困难的.我已尽可能地了解这一点,我不确定如何继续前进.

首先,我正在运行Python 2.7

我尝试在实时解释器中运行"import MySQLdb"时得到的错误是:

ImportError: this is MySQLdb version (1, 2, 2, 'final', 0), but _mysql is version (1, 2, 5, 'final', 1)
Run Code Online (Sandbox Code Playgroud)

当我运行"pip install mysql-python"时,我也看到以下错误日志,但是我不确定那些与jsut版本相关的错误匹配. http://pastebin.com/hqVv6aPZ

我有一个依赖于MySQLdb的python项目,我一直试图让我正在运行Python的virtualenv来正确安装软件包.这就是我所做的:

  • 我从源代码构建了MySQL,以确保我的机器上有一个64位兼容的MySQL版本.我用--universal标志来确保这一点.
  • 我已经验证我运行的是64位版本的Python.
  • MySQL来自Homebrew
  • mysql-python来自pip

我不能为我的生活弄清楚这里要做什么.似乎我的机器上的MySQLdb和_mysql之间只有一个版本不匹配.是这样的吗?如果是这样,解决方案只是重新安装旧版本的MySQL?看来,当我强制pip安装mysql-python的1.2.5版本时,它会安装MySQLdb的1.2.2版本,所以我在这里做了什么,因为我不确定自制软件包中的哪个包实际上与版本1.2.5 for _mysql.

编辑 -

sys.path中

'/Users/XXXXXXXXXXX/virtualenvs/qa-automated-tests/lib/python27.zip',
'/Users/XXXXXXXXXXX/virtualenvs/qa-automated-tests/lib/python2.7',
'/Users/XXXXXXXXXXX/virtualenvs/qa-automated-tests/lib/python2.7/plat-darwin', 
'/Users/XXXXXXXXXXX/virtualenvs/qa-automated-tests/lib/python2.7/plat-mac', 
'/Users/XXXXXXXXXXX/virtualenvs/qa-automated-tests/lib/python2.7/plat-mac/lib-scriptpackages', '/Users/XXXXXXXXXXX/virtualenvs/qa-automated-tests/Extras/lib/python',
'/Users/XXXXXXXXXXX/virtualenvs/qa-automated-tests/lib/python2.7/lib-tk', 
'/Users/XXXXXXXXXXX/virtualenvs/qa-automated-tests/lib/python2.7/lib-old', 
'/Users/XXXXXXXXXXX/virtualenvs/qa-automated-tests/lib/python2.7/lib-dynload', 
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7', 
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin', 
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk', 
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac', 
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', 
'/Users/adam.stark/virtualenvs/qa-automated-tests/lib/python2.7/site-packages'
Run Code Online (Sandbox Code Playgroud)

Python --version表示我的版本是2.7.5.我还将pastebin设置为public.我只是不确定该转储中的相关信息到底是什么,它会吐出16个错误.

Xen*_*ogy 4

这里的问题最终有几件事。正如 abarnert 在问题评论中指出的那样,系统 python 和 virtualenv python 混合在一起。为了解决这个问题,我必须将 PyDev 项目的项目属性更改为仅指向 virtualenv python 实例,然后在 PyDev 解释器首选项中我必须重建 PYTHONPATH。

完成此操作后,我必须在 virtualenv 中运行以下代码:

pip uninstall mysql-python 
pip install mysql-python==1.2.5
Run Code Online (Sandbox Code Playgroud)

这解决了所有问题。

  • 如果我想使用更新的 mysql-python 该怎么办?`但是_mysql是版本(1, 2, 5, 'final', 1)`,`_mysql`对应的包是什么?是否可以更新/升级`_mysql`? (2认同)