当尝试从Django使用MySQLdb时,一位同事收到此错误消息:
[...]
ImproperlyConfigured("Error loading MySQLdb module: %s" % e) django.core.exceptions.ImproperlyConfigured:
Error loading MySQLdb module: dlopen(/Users/roy/.python-eggs/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg-tmp/_mysql.so, 2):
Symbol not found: _mysql_affected_rows
Referenced from: /Users/roy/.python-eggs/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg-tmp/_mysql.so Expected in: dynamic lookup
他正在使用OS X 10.5,Python 2.5(使用OS X到达),MySQL 5.1& MySQLdb 1.2.3c1。
知道如何攻击这个吗?
答案 0 :(得分:6)
最好从头开始安装mysql和它的Python绑定,每当我在OS X 10.4或10.5上需要MySQLdb时,我都会使用以下步骤:
为您的系统安装MySQL,dmg安装程序应该足够了
MySQL的默认位置将在某处:/usr/local/mysql-5.0.45-osx10.4-i686
。从/usr/local/mysql/lib
开始,创建一个软链接:
ln -s ../../mysql-5.0.45-osx10.4-i686/lib mysql
下载MySQLdb source并解压缩
编辑解压缩的MySQLdb目录下的文件site.cfg
,注释掉registry_key
并将mysql_config
设置为:
mysql_config = /usr/local/mysql-5.0.45-osx10.4-i686/bin/mysql_config
从MySQLdb目录中继续构建常规Python包:
sudo python setup.py install
如果一切正常,请在新终端中测试MySQLdb:
python -c "import MySQLdb"
如果成功,上述内容应该不返回。上面的例子显示了OS 10.4和MySQL 5.0,用适当的工具版本替换它们。
答案 1 :(得分:1)
这很复杂但很难,但它适用于 MacOSX Lion 。
您将使用:
Xcode
Brew
Port
Pip
确保您安装了Xcode(4.X),并且您的mac配置为查找可执行文件,因为在安装mysql-python的过程中 Macports 将使用它。
确保已安装Xcode命令行工具
启动Xcode app>>首选项>>下载>> “组件”标签>>命令行工具>>点击安装
从终端运行以下命令。
xcodebuild -version
如果您遇到此错误
/usr/bin/xcodebuild -version Error: No developer directory found at /Developer
尝试运行
/usr/bin/xcode-select
这将更新开发人员目录路径。
然后您需要手动切换到/ Applications:
中的新Xcode安装目录sudo /usr/bin/xcode-select -switch /Applications/Xcode.app
卸载 mysql [备份数据之前!]。
sudo rm /usr/local/mysql
sudo rm -rf /usr/local/mysql*
sudo rm -rf /Library/StartupItems/MySQLCOM
sudo rm -rf /Library/PreferencePanes/My*
edit /etc/hostconfig and remove the line MYSQLCOM=-YES-
sudo rm -rf /Library/Receipts/mysql*
sudo rm -rf /Library/Receipts/MySQL*
sudo rm -rf /var/db/receipts/com.mysql.*
使用brew再次安装Mysql:
brew install mysql
您可能会遇到此错误。
Error: Cannot write to /usr/local/Cellar
fix 。
你应该准备好了。sudo port install py27-mysql
pip install mysql-python
python -c "import MySQLdb"
如果您没有看到安装MySQLdb的任何错误。
答案 2 :(得分:0)
是的,MySQLDb egg是针对不同版本的libmysqlclient编译的,而不是系统中存在的版本。您需要获得一个合适的鸡蛋(卸载前面的鸡蛋)或者从头开始构建MySQLDb以针对系统中存在的库进行编译。
我不知道为什么,但我认为你的同事可能会对这个问题感兴趣:
答案 3 :(得分:0)
在OS X 10.6上,我遇到了Thierry在32位Python(2.6.5)上的解决方案。
升级到Python 2.7 64位版本为我解决了这个问题。
答案 4 :(得分:0)
从一个干净的平板开始是有帮助的,因此请确保卸载早期版本的MySQL。请查看此帖子以获取卸载帮助How do you uninstall MySQL from Mac OS X?
谢谢!
答案 5 :(得分:0)
尝试运行:
easy_install -U distribute
pip install --upgrade mysql-python
注意: 如果在编译时有任何缺少符号的错误,则需要使用mysql开发库来编译它。
在Linux上,它很容易安装:
sudo apt-get install mysql-devel
或:
sudo yum install mysql-devel
在Mac上你可能需要下载MySQL Connector然后你可能需要传入一个--with-mysql-libs选项来指向解压缩C库时的目录。 或者您可以尝试将库放在默认目录中:/ usr / lib64 / mysql
答案 6 :(得分:-1)
sudo apt-get install python-mysqldb
确保它应该正确安装
或者您可以使用其他替代方法,例如easy_install