我已经在Mac OS X 10.12.6(Sierra)上成功安装了unixODBC 2.3.4但是当我尝试运行pip install pyodbc
时遇到以下错误:
ld: library not found for -lodbc
我认为它正在寻找的是与unixODBC一起安装的libodbc.la:
test -z "/usr/local/lib" || .././install-sh -c -d "/usr/local/lib"
/bin/sh ../libtool --mode=install /usr/bin/install -c libodbc.la '/usr/local/lib'
这不是Pyodbc正在寻找的吗?如何让它成功找到并使用它?
答案 0 :(得分:2)
我已经下载了Pyodbc source(版本4.0.17)的副本,并通过检查setup.py
来解决这个问题。它确实在寻找unixODBC:
# The latest versions of OS X no longer ship with iodbc. Assume
# unixODBC for now.
settings['libraries'].append('odbc')
这会导致使用ld
调用-lodbc
,/lib/usr/libodbc.dylib
查找/lib/local/usr
。不幸的是,自El Capitan以来,正常安装进入setup.py
。
我要解决此问题的方法是在sys.platform == 'darwin':
部分的# unixODBC make/install places libodbc.dylib in /usr/local/lib/ by default
# (also OS/X since El Capitan prevents /usr/lib from being accessed )
settings['library_dirs'] = [ '/usr/local/lib' ]
下添加以下行:
$ sudo pip install /path/to/pyodbc-4.0.17/
然后我可以使用PIP从我的本地系统安装它,如下所示:
public string SendAllticketDetailsToService(AutoProvisionWebAPIClient.AutoProvisionTicketsResponse vvv)
{
// bool result = false;
string xmlStringResult;
xmlStringResult = "";
try
{
AutoProvisionController.SRMUserRegServiceReference.AutoProvisionTicketsResponse APTR = new AutoProvisionController.SRMUserRegServiceReference.AutoProvisionTicketsResponse();
我会努力为Pyodbc制作一个补丁,但同时也让我接受了。