我有一个使用 mssql 的 python 应用程序 - 我正在尝试 pyodbc,而不是使用 pymssql。在 Windows 本地计算机中运行应用程序时似乎没有问题。在打包为容器的开发环境中部署应用程序时,我看到以下错误。
from pyodbc import Error
2017-04-14T13:58:28.858638588Z ImportError: Error loading shared library libodbc.so.2: No such file or directory (needed by /usr/local/lib/python3.5/site-packages/pyodbc.cpython-35m-x86_64-linux-gnu.so)
文档要求我安装数据库驱动程序和 pyodbc。
ubuntu环境没有odbc库,需要使用安装
sudo apt install unixodbc-dev
安装后使用
更新 ubuntusudo apt-get update
它将解决问题。
欲进一步阅读,请访问此链接
这是一个老问题,所以这里有一个更新的(2023 年)答案。
错误
ImportError: Error loading shared library libodbc.so.2: No such file or directory
需要安装适用于 SQL Server 的 Microsoft ODBC 驱动程序。首先,我尝试了上面提供的解决方案,即
# This solution is incomplete!
sudo apt install unixodbc-dev
但是这个解决方案是不完整,因为它不会安装所有必需的驱动程序。例如,Python 脚本
import pyodbc
print(pyodbc.drivers())
仍会返回空列表
[]
。
解决方案是遵循 Microsoft 本身给出的说明。对于 Ubuntu:
case $(uname -m) in
x86_64) architecture="amd64" ;;
arm64) architecture="arm64" ;;
*) architecture="unsupported" ;;
esac
if [[ "unsupported" == "$architecture" ]];
then
echo "Alpine architecture $(uname -m) is not currently supported.";
exit;
fi
#Download the desired package(s)
curl -O https://download.microsoft.com/download/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/msodbcsql18_18.3.1.1-1_$architecture.apk
curl -O https://download.microsoft.com/download/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/mssql-tools18_18.3.1.1-1_$architecture.apk
#(Optional) Verify signature, if 'gpg' is missing install it using 'apk add gnupg':
curl -O https://download.microsoft.com/download/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/msodbcsql18_18.3.1.1-1_$architecture.sig
curl -O https://download.microsoft.com/download/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/mssql-tools18_18.3.1.1-1_$architecture.sig
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --import -
gpg --verify msodbcsql18_18.3.1.1-1_amd64.sig msodbcsql18_18.3.1.1-1_$architecture.apk
gpg --verify mssql-tools18_18.3.1.1-1_amd64.sig mssql-tools18_18.3.1.1-1_$architecture.apk
#Install the package(s)
sudo apk add --allow-untrusted msodbcsql18_18.3.1.1-1_$architecture.apk
sudo apk add --allow-untrusted mssql-tools18_18.3.1.1-1_$architecture.apk
这应该可以解决所有问题,前面提到的 Python 脚本现在应该输出
['ODBC Driver 18 for SQL Server']
。
警告: 如果您尝试上述不完整的解决方案,然后按照 Microsoft 提供的说明进行操作(就像我一开始所做的那样),您将遇到与循环和不完整安装以及相关依赖项相关的令人讨厌的问题。如果您不小心先执行了不完整的解决方案,最好按照 Microsoft 推荐的步骤
sudo apt purge unixodbc-dev
before 进行操作。
最后,请注意,Microsoft 现在完全支持 ODBC,因此上述说明应被视为安装 ODBC 的方式,因此是 OP 原始问题的正确答案。
使用 pyodbc,它有很多问题,因为您需要下载兼容的驱动程序,这可能会非常混乱。相反,使用 pymssql,它不需要额外的驱动程序。
了解更多详细信息:pymssql 与 pyodbc 与 adodbapi 与...