MySQLdb和Python ImportError

时间:2014-11-22 01:38:20

标签: python mysql pip homebrew 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)

当我运行“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'

Python --version说我在版本2.7.5。我还将pastebin设置为public。我只是不确定转储中的相关信息究竟是什么,它会回吐16个错误。

4 个答案:

答案 0 :(得分:4)

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

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

pip uninstall mysql-python 
pip install mysql-python==1.2.5

这解决了所有问题。

答案 1 :(得分:1)

你可以试试这个。打开终端并输入:

true

它对我有用。我使用Python 2

答案 2 :(得分:0)

我有同样的问题,因为不同的原因而产生。我的工作机器(大学基础设施的一部分)没有root权限。我不得不通过发布在本地安装MySQLdb pip install --user MySQL-python(来自此guide)。这产生了同样的结果 ImportError: this is MySQLdb version (1, 2, 3, 'final', 0), but _mysql is version (1, 2, 5, 'final', 1)不匹配。安装1.2.5版本无效。

我做了什么:从本地卸载并重新安装版本1.2.3,如错误所示

pip install --user MySQL-python==1.2.3

错误消失了。

答案 3 :(得分:0)

执行此操作,然后重试

pip uninstall mysqlclient