Python 使用备用unixODBC安装

Python 使用备用unixODBC安装,python,sql-server,pyodbc,freetds,unixodbc,Python,Sql Server,Pyodbc,Freetds,Unixodbc,我工作的环境中,unixODBC安装在组织范围的集中安装驱动器上,但我们(实际的开发人员)不允许在其中安装驱动程序或数据源。这一切都是倒退,但我不得不接受 现在我正在尝试构建一个python应用程序,该应用程序可以从这个unix环境连接到mssql 2005服务器,所以我显然需要一些sql驱动程序 通过在我完全控制的驱动器部分重新安装unixODBC,我避免了无法访问预装unixODBC的问题。我已经安装了freeTDS并配置了一切,这样我就可以用isql成功地连接到服务器了——太棒了 现在唯一

我工作的环境中,unixODBC安装在组织范围的集中安装驱动器上,但我们(实际的开发人员)不允许在其中安装驱动程序或数据源。这一切都是倒退,但我不得不接受

现在我正在尝试构建一个python应用程序,该应用程序可以从这个unix环境连接到mssql 2005服务器,所以我显然需要一些sql驱动程序

通过在我完全控制的驱动器部分重新安装unixODBC,我避免了无法访问预装unixODBC的问题。我已经安装了freeTDS并配置了一切,这样我就可以用isql成功地连接到服务器了——太棒了

现在唯一的问题是,当我在python程序(使用pyodbc)中执行一行时,如下所示:

我认为这是因为pyodbc仍然在寻找原始的unixODBC安装,而不是我的本地安装。所以我想知道:


如何配置脚本以查找本地unixODBC安装,而不是主驱动器上安装的unixODBC安装

pyodbc在自定义设置中很难安装。您需要编辑
setup.py
脚本,通过添加以下内容从自定义位置查找unixODBC

settings['include_dirs'] = ['/opt/local/include']
settings['library_dirs'] = ['/opt/local/lib']

获取编译器设置
函数。

问题可能是因为它在全局ini文件中查找。您可以通过定义
ODBCSYSINI=/path/to/location/of/inifiles
来设置它查找
odbc.ini
odbcinst.ini
文件的位置。感谢上面的回答-它让我在setup.py中编辑get\u编译器设置,告诉它不要使用默认的iodbc

对我有用的(OS X 10.9,pyodbc 3.0.7)是:


你能详细说明一下吗?我从来没有真正弄乱过setup.py,我也不太确定我在做什么。假设您正在使用,请将我提到的行添加到第142行下面。只需确保路径指向您的自定义安装目录。Thx@eclaird,我在OS X上也遇到过同样的问题,其中包含iODBC的苹果对于我需要连接的MSSQL版本不起作用。我在让pyodbc根据不同的odbc安装进行构建时遇到了问题,但您的解决方案工作得很好=)这仍然适用于pyodbc 3.0.7(我猜),因为我更像是brewish类型,所以用usr替换了opt;-)当然,正如在snorris中一样,在elif sys.platform=='darwin'部分中也将库设置更改为'odbc'。完成后,我可以通过ODBC与PostgreSQL进行对话。
 ('IM002', '[IM002] [unixODBC][Driver Manager]Data source name not found, and no default driver specified (0) (SQLDriverConnectW)')
settings['include_dirs'] = ['/opt/local/include']
settings['library_dirs'] = ['/opt/local/lib']
elif sys.platform == 'darwin':
    # OS/X now ships with iODBC.
    #settings['libraries'].append('iodbc')

    # but I don't want to use iodbc, I want to use brewed unixodbc 
    settings['libraries'].append('odbc')