在Mac OS 10.6(python 2.6)上安装/构建pymssql
根据README里的说明和这个链接 http://code.google.com/p/pymssql/wiki/Compilation,我已经安装了Cython(版本0.14.1)、FreeTDS(版本0.82,使用MacPorts),而且我已经安装了XCode和gcc。
在运行 python setup.py install
的时候,我遇到了构建错误:出现了很多 undeclared name not builtin:
的错误,像 strlen
、PyMem_Malloc
、PyMem_Free
、PY_LONG_LONG
这些,还有一些 ___ is deprecated, use 'cpython'
的提示。
我在谷歌上找到了一条讨论串 http://groups.google.com/group/cython-users/browse_thread/thread/468bb80480ede699/dc8267a4274c2413,里面有人提到第一个错误(把 from stdlib cimport strlen, strcpy
改成了 from libc.string cimport strlen, strcpy
)。
现在我遇到的错误是: _mssql.pyx:650:34: Cannot convert Python object to 'const_char *'
这些问题来自这个文件 http://code.google.com/p/pymssql/source/browse/tags/1.9.908/_mssql.pyx
我的问题:
如果我没有正确准备我的系统来使用 pymssql
,我哪里做错了?
或者
如果 _mssql.pyx
文件使用了过时的导入,我该怎么修复它们?
3 个回答
这个分支编译得非常顺利:
我用pip安装了Cython,具体是这样做的:
pip install Cython
然后我去了www.freetds.org,找到了下载最新源代码的cvs命令(在用户指南里找到“要构建的内容:软件包、压缩包和CVS库”)。要构建这个,别看网站上的说明,直接查看你刚下载的文件夹里的INSTALL.CVS文件。运行./autogen.sh的时候,使用:
./autogen.sh --with-tdsver=7.0
autogen.sh会创建一个配置脚本,然后这个配置脚本会进行一些设置。你需要用7.0版本的Python来和TDS以及MS SQL一起工作。在运行完autogen.sh后,你需要执行'make',然后再执行'sudo make install'。
现在你需要pymssql的压缩包。解压它,然后运行:
python setup.py config
python setup.py build
sudo python setup.py install
这样就可以了。
你有没有试过从主干版本构建1.9.909?对我来说,这个版本构建得很顺利,而0.908版本就不行。
可惜的是,即使成功构建并安装了,我还是遇到了导入错误:在OS X上构建pymssql