python - 无法打开 lib '/usr/local/lib/libmsodbcsql.13.dylib':找不到文件 - 但文件存在
问题描述
我正在尝试在 macOS 10.15.4 下使用 pyodbc 和 unixODBC 从 Jupyter 笔记本连接到 MSSQL 服务器。我刚刚将 OSX 升级到 Catalina,我之前的工作配置已经损坏。
我尝试连接:
pyodbc.connect('Driver={ODBC Driver 13 for SQL Server};Server=xxx;Database=xxx;uid=xxx;pwd=xxx;')
引发错误:
Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib '/usr/local/lib/libmsodbcsql.13.dylib' : file not found (0) (SQLDriverConnect)")
但是这个文件是存在的,并且是由 obdcinst.ini 中的驱动程序指向的,并且链接看起来是正确的。
为了跟踪这一点,我运行:
$ odbcinst -j
unixODBC 2.3.4
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /Users/johnmorgan/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
驱动文件存在,如下:
$ more /etc/odbcinst.ini
[ODBC Driver 13 for SQL Server]
Description=Microsoft ODBC Driver 13 for SQL Server
Driver=/usr/local/lib/libmsodbcsql.13.dylib
UsageCount=1
指示的驱动程序是一个符号链接 - 这是错误中的“找不到文件”文件:
$ ls -al /usr/local/lib/libmsodbcsql.13.dylib
lrwxr-xr-x 1 johnmorgan admin 54 Apr 15 08:13 /usr/local/lib/libmsodbcsql.13.dylib -> ../Cellar/msodbcsql/13.1.9.2/lib/libmsodbcsql.13.dylib
符号链接指向实际的库文件:
$ ls -al /usr/local/Cellar/msodbcsql/13.1.9.2/lib/libmsodbcsql.13.dylib
-r--r--r-- 1 johnmorgan admin 2456360 Jan 29 2018 /usr/local/Cellar/msodbcsql/13.1.9.2/lib/libmsodbcsql.13.dylib
据我所知,所有驱动程序、文件和链接都是正确的。
那么为什么我会收到“找不到文件”错误,我该如何解决呢?
我知道其他人有这个问题,例如Can't open lib 'ODBC Driver 13 for SQL Server'?符号链接问题?,但这并没有帮助我解决我的问题。
解决方案
推荐阅读
- python - Django中2个模型之间的关系
- oracle - Oracle how to remove extra message in the select output file
- database-design - Google Cloud data processing options for parsing of files that are delivered asynchronously
- javascript - Call Python-script or PHP-script with JavaScript by Button-Click (RasperryPi)
- c# - 没有从另一个表单的公共方法返回预期值。尽管在同一个类中或在返回特定值时工作正常
- python-3.x - Facebook Messenger API 无法发送附件
- python-3.x - 在 k 部图中展开 networkx 的顶点
- google-app-engine - 谷歌云平台:App Engine dispatch.yaml 限制
- r - 使用ggplot的RDD图,过渡区域将线延伸到截止点
- python - Flutter web 中的 HTTP 触发 Cloud Function