在 OS X 上构建 pymssql
Posted
技术标签:
【中文标题】在 OS X 上构建 pymssql【英文标题】:Building pymssql on OS X 【发布时间】:2011-06-18 19:13:38 【问题描述】:尝试在 Mac OS X 10.6.6 上构建任何版本的 pymssql。版本 1.0.2(稳定)和 1.9.909(主干)都构建和安装,但在导入时返回以下错误。有人在这个项目上取得过成功吗? (注意我正在使用 pyodbc ,但如果可能的话,我想消除 ODBC 层)
Python 2.6.5 (r265:79359, Mar 24 2010, 01:32:55)
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pymssql
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "_mssql.pxd", line 10, in init pymssql (pymssql.c:8444)
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/pymssql-1.9.909_dev-py2.6-macosx-10.6-intel.egg/_mssql.so, 2): **Symbol not found: _dbadata**
Referenced from: /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/pymssql-1.9.909_dev-py2.6-macosx-10.6-intel.egg/_mssql.so
**Expected in: flat namespace**
in /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/pymssql-1.9.909_dev-py2.6-macosx-10.6-intel.egg/_mssql.so
【问题讨论】:
【参考方案1】:我为此编写的 fab (fabric) 脚本
import os
from fabric.api import local
def prep_dev_env():
os.chdir('/tmp/')
local('cvs -d:pserver:freetds.cvs.sourceforge.net:/cvsroot/freetds login')
local('cvs -z3 -d:pserver:freetds.cvs.sourceforge.net:/cvsroot/freetds checkout -P freetds')
os.chdir('/tmp/freetds/')
local('sudo ./autogen.sh --with-tdsver=7.0')
local('sudo make')
local('sudo make install')
os.chdir('/tmp/')
#assumes macports is installed
local('sudo port install mercurial')
local('hg clone https://code.google.com/p/pymssql/')
os.chdir('/tmp/pymssql/')
local('python setup.py config')
local('python setup.py build')
local('python setup.py install')
return
【讨论】:
【参考方案2】:让它与 tdsver 7.2 一起使用,请参阅 here
在我的虚拟环境中:
pip install cython >> ok
vim `locate Formula/freetds.rb`
#:s:7.1:8.0:g # Change version 7.1 to 8.0...
#:wq
cd /tmp
wget http://pypi.python.org/packages/source/p/pymssql/pymssql-1.0.2.tar.gz#md5=04dc4aa591acacbc8f183daeea21b690
tar -xzvf pymssql-1.0.2.tar.gz
cd pymssql-1.0.2
python setup.py config
python setup.py build
sudo python setup.py install
终于成功了!
【讨论】:
有趣 - 我一直在使用 v8 协议构建 freetds:./configure --with-tdsver=8.0 --enable-msdblib 是的。好的,pymssql 安装正确,但是当我进行查询时它没有返回结果!使用 8.0 版安装它可以工作。以上是关于在 OS X 上构建 pymssql的主要内容,如果未能解决你的问题,请参考以下文章
无法在 OS X Yosemite 上构建 puma gem