在OSX上pip安装MySQL-python后出现版本错误
我已经成功在我的虚拟环境中安装了 MySQL-python
,而且通过 PyCharm 能够导入它来确认这一点。不过,我收到了这个信息:
ImportError: this is MySQLdb version (1, 2, 4, 'beta', 4), but _mysql is version (1, 2, 5, 'final', 1)
我的安装步骤是:
- 在终端中激活我的虚拟环境(venv)
export PATH=$PATH:/usr/local/mysql/bin
export CFLAGS=-Qunused-arguments export CPPFLAGS=-Qunused-arguments
pip install MySQL-python
这个过程显示安装成功。但我真的不明白问题出在哪里,是不是 pip
给我提供了一个损坏的目录?
我试着在网上搜索解决办法,但没有找到有效的。然后我尝试从 sourceforge 下载 1.2.4b4 版本,并在虚拟环境中构建它。结果出现了以下错误:
ld: warning: ignoring file /usr/local/Cellar/mysql/5.6.19/lib/libmysqlclient_r.dylib, file was built for x86_64 which is not the architecture being linked (i386): /usr/local/Cellar/mysql/5.6.19/lib/libmysqlclient_r.dylib
我在 mysql 和 python 上运行了 file $(which )
,返回了 mysql 是 64 位版本,而 python 有 32 位和 64 位两个版本。
我真的不知道接下来该怎么做,非常希望能得到一些帮助,如果我遗漏了什么,请告诉我!谢谢
编辑:
我用 pip uninstall MySQL-python
卸载了 MySQL-python,然后尝试用这个压缩包:https://pypi.python.org/pypi/MySQL-python/1.2.5
pip install -Iv https://pypi.python.org/packages/source/M/MySQL-python/MySQL-python-1.2.5.zip#md5=654f75b302db6ed8dc5a898c625e030c
结果给了我和之前一样的错误,提示 MySQLdb 是 1.2.4b4 版本,但 _mysql 是 1.2.5。这让我觉得可能还有一个未被卸载的 MySQL-python 版本。请问我该怎么测试这个呢?谢谢!
2 个回答
0
感谢上面的回答,这对将来遇到问题的人很有帮助。我通过重新安装1.2.5版本并重启我的编译器解决了这个问题。
换句话说,我上面提到的方法应该是有效的。为了以后能顺利进行,确保你的bin/activate和bin/pip的路径是指向你的虚拟环境,而不是你开发团队中其他人的环境。
0
这里有几个常见的问题:
- 确保你的路径是正确的,并且
pip
和python
指向的是同一个解释器。虚拟环境最好通过source activate <NAME>
来激活,或者把它们放在路径前面,而不是后面。 - 我在使用 MySqlSB 时遇到了很多问题,Stack Overflow 上也有很多相关的问题。当我换成
pymysql
后,所有问题都解决了。因为pymysql
的接口和mysqldb
完全兼容。更棒的是,它有一个方法install_as_MySQLdb()
,可以让pymysql
看起来就像是mysqldb
,这样所有依赖后者的包都能和前者一起工作。
我在 OSX 上设置环境的步骤是:
- 先卸载所有的 Python 安装(系统自带的 Python、Homebrew 安装的等)。
brew install mysql gcc
。这里的gcc
是为了你如果想编译c
或fortran
扩展到 Python 模块时用的。- 注意权限错误——总是运行
brew doctor
来检查。 - 安装 anaconda。
- 设置一个虚拟环境
conda create -n <NAME> python=3.4
。 - 激活虚拟环境
source activate <NAME>
。 - 安装所需的包,优先用
conda
,如果没有再用pip
。比如,我总是先用conda install numpy
,这样就不用自己编译了,然后用pip install pymysql
。