在 OSX 上使用 MySQLdb 的问题:找不到符号 _mysql_affected_rows
Posted
技术标签:
【中文标题】在 OSX 上使用 MySQLdb 的问题:找不到符号 _mysql_affected_rows【英文标题】:Problem using MySQLdb on OSX: symbol not found _mysql_affected_rows 【发布时间】:2011-03-26 07:06:22 【问题描述】:这与a previous question有关。
但是,主要发布的解决方案对我不起作用。我在 Snow Leopard 上,使用 32 位 5.1.49 mysql dmg 安装。 我正在使用内置的python(显然,如cmets中所述,我的Python版本不同),它似乎是2.6.5 32位:
我已经从the usual location 下载了 MySQL-python 1.2.3 并更改了 site.cfg 以便 mysql_config 指向正确的位置并且 registry_key 指令被注释掉。这些软件包似乎可以很好地构建和安装:
caywork:MySQL-python-1.2.3 carl$ python setup.py clean 运行干净 caywork:MySQL-python-1.2.3 carl$ python setup.py build 运行构建 运行 build_py 复制 MySQLdb/release.py -> build/lib.macosx-10.3-fat-2.6/MySQLdb 运行 build_ext caywork:MySQL-python-1.2.3 carl$ sudo python setup.py install 运行安装 运行 bdist_egg 运行 egg_info 编写 MySQL_python.egg-info/PKG-INFO 将***名称写入 MySQL_python.egg-info/top_level.txt 将dependency_links写入MySQL_python.egg-info/dependency_links.txt 读取清单文件'MySQL_python.egg-info/SOURCES.txt' 阅读清单模板'MANIFEST.in' 警告:找不到与“清单”匹配的文件 警告:找不到与“ChangeLog”匹配的文件 警告:找不到与“GPL”匹配的文件 编写清单文件'MySQL_python.egg-info/SOURCES.txt' 将库代码安装到 build/bdist.macosx-10.3-fat/egg 运行 install_lib 运行 build_py 复制 MySQLdb/release.py -> build/lib.macosx-10.3-fat-2.6/MySQLdb 运行 build_ext 创建 build/bdist.macosx-10.3-fat/egg 复制 build/lib.macosx-10.3-fat-2.6/_mysql.so -> build/bdist.macosx-10.3-fat/egg 复制 build/lib.macosx-10.3-fat-2.6/_mysql_exceptions.py -> build/bdist.macosx-10.3-fat/egg 创建 build/bdist.macosx-10.3-fat/egg/MySQLdb 复制 build/lib.macosx-10.3-fat-2.6/MySQLdb/__init__.py -> build/bdist.macosx-10.3-fat/egg/MySQLdb 复制 build/lib.macosx-10.3-fat-2.6/MySQLdb/connections.py -> build/bdist.macosx-10.3-fat/egg/MySQLdb 创建 build/bdist.macosx-10.3-fat/egg/MySQLdb/constants 复制 build/lib.macosx-10.3-fat-2.6/MySQLdb/constants/__init__.py -> build/bdist.macosx-10.3-fat/egg/MySQLdb/constants 复制 build/lib.macosx-10.3-fat-2.6/MySQLdb/constants/CLIENT.py -> build/bdist.macosx-10.3-fat/egg/MySQLdb/constants 复制 build/lib.macosx-10.3-fat-2.6/MySQLdb/constants/CR.py -> build/bdist.macosx-10.3-fat/egg/MySQLdb/constants 复制 build/lib.macosx-10.3-fat-2.6/MySQLdb/constants/ER.py -> build/bdist.macosx-10.3-fat/egg/MySQLdb/constants 复制 build/lib.macosx-10.3-fat-2.6/MySQLdb/constants/FIELD_TYPE.py -> build/bdist.macosx-10.3-fat/egg/MySQLdb/constants 复制 build/lib.macosx-10.3-fat-2.6/MySQLdb/constants/FLAG.py -> build/bdist.macosx-10.3-fat/egg/MySQLdb/constants 复制 build/lib.macosx-10.3-fat-2.6/MySQLdb/constants/REFRESH.py -> build/bdist.macosx-10.3-fat/egg/MySQLdb/constants 复制 build/lib.macosx-10.3-fat-2.6/MySQLdb/converters.py -> build/bdist.macosx-10.3-fat/egg/MySQLdb 复制 build/lib.macosx-10.3-fat-2.6/MySQLdb/cursors.py -> build/bdist.macosx-10.3-fat/egg/MySQLdb 复制 build/lib.macosx-10.3-fat-2.6/MySQLdb/release.py -> build/bdist.macosx-10.3-fat/egg/MySQLdb 复制 build/lib.macosx-10.3-fat-2.6/MySQLdb/times.py -> build/bdist.macosx-10.3-fat/egg/MySQLdb 字节编译 build/bdist.macosx-10.3-fat/egg/_mysql_exceptions.py 到 _mysql_exceptions.pyc 字节编译 build/bdist.macosx-10.3-fat/egg/MySQLdb/__init__.py 到 __init__.pyc 字节编译 build/bdist.macosx-10.3-fat/egg/MySQLdb/connections.py 到 connections.pyc 字节编译 build/bdist.macosx-10.3-fat/egg/MySQLdb/constants/__init__.py 到 __init__.pyc 字节编译 build/bdist.macosx-10.3-fat/egg/MySQLdb/constants/CLIENT.py 到 CLIENT.pyc 字节编译 build/bdist.macosx-10.3-fat/egg/MySQLdb/constants/CR.py 到 CR.pyc 字节编译 build/bdist.macosx-10.3-fat/egg/MySQLdb/constants/ER.py 到 ER.pyc 字节编译 build/bdist.macosx-10.3-fat/egg/MySQLdb/constants/FIELD_TYPE.py 到 FIELD_TYPE.pyc 字节编译 build/bdist.macosx-10.3-fat/egg/MySQLdb/constants/FLAG.py 到 FLAG.pyc 字节编译 build/bdist.macosx-10.3-fat/egg/MySQLdb/constants/REFRESH.py 到 REFRESH.pyc 字节编译 build/bdist.macosx-10.3-fat/egg/MySQLdb/converters.py 到 converters.pyc 字节编译 build/bdist.macosx-10.3-fat/egg/MySQLdb/cursors.py 到 cursors.pyc 字节编译 build/bdist.macosx-10.3-fat/egg/MySQLdb/release.py 到 release.pyc 字节编译 build/bdist.macosx-10.3-fat/egg/MySQLdb/times.py 到 times.pyc 为 _mysql.so 创建存根加载器 字节编译 build/bdist.macosx-10.3-fat/egg/_mysql.py 到 _mysql.pyc 创建 build/bdist.macosx-10.3-fat/egg/EGG-INFO 复制 MySQL_python.egg-info/PKG-INFO -> build/bdist.macosx-10.3-fat/egg/EGG-INFO 复制 MySQL_python.egg-info/SOURCES.txt -> build/bdist.macosx-10.3-fat/egg/EGG-INFO 复制 MySQL_python.egg-info/dependency_links.txt -> build/bdist.macosx-10.3-fat/egg/EGG-INFO 复制 MySQL_python.egg-info/top_level.txt -> build/bdist.macosx-10.3-fat/egg/EGG-INFO 编写 build/bdist.macosx-10.3-fat/egg/EGG-INFO/native_libs.txt 未设置 zip_safe 标志;分析存档内容... 创建'dist/MySQL_python-1.2.3-py2.6-macosx-10.3-fat.egg'并添加'build/bdist.macosx-10.3-fat/egg' 删除“build/bdist.macosx-10.3-fat/egg”(以及它下面的所有内容) 处理 MySQL_python-1.2.3-py2.6-macosx-10.3-fat.egg 删除 /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/MySQL_python-1.2.3-py2.6-macosx-10.3-fat.egg 将 MySQL_python-1.2.3-py2.6-macosx-10.3-fat.egg 复制到 /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages MySQL-python 1.2.3 已经是 easy-install.pth 中的活动版本 已安装 /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/MySQL_python-1.2.3-py2.6-macosx-10.3-fat.egg MySQL-python==1.2.3 的处理依赖项 MySQL-python==1.2.3 完成处理依赖但是当我尝试使用它时,我得到了这个:
caywork:MySQL-python-1.2.3 carl$ python -c "import MySQLdb" /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/MySQL_python-1.2.3-py2.6-macosx-10.3-fat.egg/_mysql.py:3:用户警告:模块_mysql 已经从 /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/MySQL_python-1.2.3-py2.6-macosx-10.3-fat.egg/_mysql.pyc 导入,但是 /Users/carl/Source/MySQL-python-1.2.3 被添加到 sys.path 回溯(最近一次通话最后): 文件“”,第 1 行,在 文件“MySQLdb/__init__.py”,第 19 行,在 导入_mysql 文件“build/bdist.macosx-10.3-fat/egg/_mysql.py”,第 7 行,在 文件“build/bdist.macosx-10.3-fat/egg/_mysql.py”,第 6 行,在 __bootstrap__ ImportError:dlopen(/Users/carl/.python-eggs/MySQL_python-1.2.3-py2.6-macosx-10.3-fat.egg-tmp/_mysql.so,2):找不到符号:_mysql_affected_rows 引用自:/Users/carl/.python-eggs/MySQL_python-1.2.3-py2.6-macosx-10.3-fat.egg-tmp/_mysql.so 预期于:动态查找我在网上能找到的都是这个问题的老例子,还有很多关于在 OSX 上运行 MySQL-python 有多难的抱怨。如果有人能提供帮助,我将不胜感激!
【问题讨论】:
注意,您没有在 10.6 上使用 Apple 提供的 Python 2.6。那是/usr/bin/python
,目前是Python 2.6.1。那是一个 64 位/32 位通用版本。您最有可能使用 python.org 安装程序(安装在 /Library/Frameworks/Python.framework ...)中的 32 位 Python 2.6 并带有来自 /usr/local/bin/python2.6 的链接.
谢谢内德!如果我一直使用 Apple 提供的 Python,你认为我遇到的这个问题会有所不同吗?
+1 允许您添加超过 1 个链接。使用 python 2.7.1 32bit 与 MySQL 有类似问题
【参考方案1】:
我最终开始工作的唯一(当然是笨拙的)解决方案是在应用 this patch 后使用 MySQL-python-1.2.2,从此处 (http://www.mangoorange.com/2008/08/01/installing-python-mysqldb-122-on-mac-os-x/) 和此处 (http://flo.nigsch.com/?p=62) 找到的建议拼凑而成)。抱歉缺少链接,但我没有足够的代表点来发布多个链接。
【讨论】:
以上是关于在 OSX 上使用 MySQLdb 的问题:找不到符号 _mysql_affected_rows的主要内容,如果未能解决你的问题,请参考以下文章
Python 的 MySQLdb 在 Homebrewed MySQL 中找不到 libmysqlclient.dylib
使用 get-pip 在 OSX 上安装时找不到 Pip 命令 [重复]