在 Mac OS Lion 上安装 oursql 成功,但在 python 中导入失败。 **为啥?**
Posted
技术标签:
【中文标题】在 Mac OS Lion 上安装 oursql 成功,但在 python 中导入失败。 **为啥?**【英文标题】:Installing oursql on Mac OS Lion successes but import in python fails. **Why?**在 Mac OS Lion 上安装 oursql 成功,但在 python 中导入失败。 **为什么?** 【发布时间】:2011-10-10 10:56:33 【问题描述】:我按照安装说明在 Mac OS X 上安装 oursql。因为
sudo pip install oursql
告诉我,它找不到 mysql_config
我(用 locate mysql_config
定位它并告诉它在哪里可以找到它
sudo MYSQL_CONFIG=/usr/local/mysql-5.5.14-osx10.6-x86_64/bin/mysql_config pip install oursql
出于可读性原因,我在底部添加了终端输出。之后,我在终端中启动了 python(在 Mac OS Lion 上,它现在是 python 2.7,......)并且做到了
>>> import oursql
但是python一直告诉我:
>>> import oursql
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: dlopen(/Library/Python/2.7/site-packages/oursql.so, 2): Library not loaded: libmysqlclient.18.dylib
Referenced from: /Library/Python/2.7/site-packages/oursql.so
Reason: image not found
我错过了什么?有什么建议吗?
pip 安装的终端输出:
Downloading/unpacking oursql
Downloading oursql-0.9.2.tar.bz2 (113Kb): 113Kb downloaded
Running setup.py egg_info for package oursql
Installing collected packages: oursql
Running setup.py install for oursql
skipping 'oursqlx/oursql.c' Cython extension (up-to-date)
building 'oursql' extension
/usr/local/mysql-5.5.14-osx10.6-x86_64/bin/mysql_config --cflags
llvm-gcc-4.2 -fno-strict-aliasing -fno-common -dynamic -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -mno-fused-madd -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -pipe -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c oursqlx/oursql.c -o build/temp.macosx-10.7-intel-2.7/oursqlx/oursql.o -I/usr/local/mysql-5.5.14-osx10.6-x86_64/include -Os -g -fno-common -fno-strict-aliasing -arch x86_64
oursqlx/oursql.c: In function ‘__pyx_pf_6oursql_10Connection___cinit__’:
oursqlx/oursql.c:4630: warning: implicit conversion shortens 64-bit value into a 32-bit value
oursqlx/oursql.c: In function ‘__pyx_pf_6oursql_10_Statement_execute’:
oursqlx/oursql.c:10219: warning: implicit conversion shortens 64-bit value into a 32-bit value
oursqlx/oursql.c: In function ‘__pyx_pf_6oursql_16_DBAPITypeObject___richcmp__’:
oursqlx/oursql.c:17597: warning: implicit conversion shortens 64-bit value into a 32-bit value
llvm-gcc-4.2 -fno-strict-aliasing -fno-common -dynamic -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -mno-fused-madd -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -pipe -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c oursqlx/compat.c -o build/temp.macosx-10.7-intel-2.7/oursqlx/compat.o -I/usr/local/mysql-5.5.14-osx10.6-x86_64/include -Os -g -fno-common -fno-strict-aliasing -arch x86_64
/usr/local/mysql-5.5.14-osx10.6-x86_64/bin/mysql_config --libs
llvm-gcc-4.2 -Wl,-F. -bundle -undefined dynamic_lookup -Wl,-F. -arch i386 -arch x86_64 build/temp.macosx-10.7-intel-2.7/oursqlx/oursql.o build/temp.macosx-10.7-intel-2.7/oursqlx/compat.o -o build/lib.macosx-10.7-intel-2.7/oursql.so -L/usr/local/mysql-5.5.14-osx10.6-x86_64/lib -lmysqlclient -lpthread
ld: warning: ignoring file build/temp.macosx-10.7-intel-2.7/oursqlx/oursql.o, file was built for unsupported file format which is not the architecture being linked (i386)
ld: warning: ignoring file build/temp.macosx-10.7-intel-2.7/oursqlx/compat.o, file was built for unsupported file format which is not the architecture being linked (i386)
ld: warning: ignoring file /usr/local/mysql-5.5.14-osx10.6-x86_64/lib/libmysqlclient.dylib, file was built for unsupported file format which is not the architecture being linked (i386)
Successfully installed oursql
Cleaning up...
【问题讨论】:
这完成了工作:export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:/usr/local/mysql/lib/"
感谢发布解决方案,正是我刚刚遇到的问题。 :)
【参考方案1】:
这完成了工作:
export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:/usr/local/mysql/lib/"
【讨论】:
感谢您发布解决方案。我也有这个问题。【参考方案2】:如果您不想安装完整的 MySQL,您可以使用 mysql-connector-c 编译 oursql。
下载mysql-connector-c,解压安装:
wget http://dev.mysql.com/get/Downloads/Connector-C/mysql-connector-c-6.0.2-osx10.5-x86-64bit.tar.gz/from/http://cdn.mysql.com/
tar -xvf mysql-connector-c-6-1.0.2-osx10.5-x86-64bit.tar
cd mysql-connector-c-6.0.2-osx10.5-x86-64bit
sudo cp bin/* /usr/local/bin/
sudo cp lib/* /usr/local/lib/
sudo cp -r include/* /usr/local/include/
下载并解压oursql:
wget --no-check-certificate https://launchpad.net/oursql/py3k/py3k-0.9.3/+download/oursql-0.9.3.zip
unzip oursql-0.9.3.zip
编译我们的sql:
cd oursql-0.9.3
sudo python setup.py build_ext
这已被验证可与 OSX 10.8.2、Xcode 4.5.2 和 Python 3.2.3 一起使用
【讨论】:
【参考方案3】:我在寻找在 OSX 10.10.5 上安装 oursql 的解决方案时遇到了这个问题。我之前使用 brew brew install mysql
安装了 mysql。对于那些希望在 yosemite 上安装 oursql 的人来说,这对我有用:
1) 手动下载包。见链接here。
2) 在您喜欢的文本编辑器中打开oursql/oursql-0.9.3.1/oursqlx/_exceptions.c
3) 注释最后一个“默认”,应该是这样的:
/*default:
if (err >= ER_ERROR_FIRST && err <= ER_ERROR_LAST)
return _oursqlx_ProgrammingError;
else if (err > CR_MIN_ERROR && err < CR_MAX_ERROR)
return _oursqlx_InterfaceError;*/
4) 现在再次尝试运行设置:
[sudo] python setup.py install
【讨论】:
【参考方案4】:在 mac os snow leopard 上安装 mysql-server 的最佳方法是尝试从源文件安装,以确保您正在为正确的架构 x86_64 编译 mysql。
【讨论】:
以上是关于在 Mac OS Lion 上安装 oursql 成功,但在 python 中导入失败。 **为啥?**的主要内容,如果未能解决你的问题,请参考以下文章
在 Mac OS X Lion 上安装 pymssql 时出错
如何在 Mac OS X Lion 上安装 Python 库“gevent”
如何在 MAC OS X 10.7 Lion 上安装多个 XAMPP 版本或多个 PHP 版本
在 Mac OS Lion 上使用 XAMPP 安装 MongoDb PHP 驱动程序时出错