无法在 Linux 上安装 pyodbc

我正在运行 Linux (2.6.18-164.15.1。并尝试安装 pyodbc。我正在做 pip 安装 pyodbc 和得到一个非常长的错误列表,其中结束

错误: 命令‘ gcc’失败,退出状态为1

I looked in /root/. pip/pip.log and saw the following:

InstallationError: Command/usr/local/bin/python-c“ import setuptools; 文件 =’/home/build/pyodbc/setup.py’; Execfile (’/home/build/pyodbc/setup.py’)”install —— single-version-foreign-management —— record/tmp/pip-7MS9Vu-record/install-record.txt 安装失败,错误代码1

有人在安装 pyodbc 时遇到过类似的问题吗?

156671 次浏览

I resolved my issue by following correct directions on 创建维基百科 which states:

在 Linux 上,pyodbc 通常使用 unixODBC 头构建,因此需要安装 unixODBC 及其头。在 RedHat/CentOS/Fedora 框中,这意味着您需要安装 unixODBC-devel:

yum install unixODBC-devel

我在 CentOS 5.5上也遇到过同样的问题

除了安装 unixODBC-devel 之外,我还必须安装 gcc-c + +

yum install gcc-c++

On Ubuntu, you'll need to install unixodbc-dev:

sudo apt-get install unixodbc-dev

使用以下命令安装 pip:

sudo apt-get install python-pip

一旦安装完毕,您应该能够成功地安装 pyodbc:

pip install pyodbc

我已经多次提到这个问题,并且继续寻找我在这里寻找的答案: 维基百科

为了避免 Ubuntu Linux 上的 gcc 错误,我这样做了:

sudo aptitude install g++

我还从 Synaptic 安装了以下两个软件包:

  • python-dev

  • Tdsodbc

我需要所有这些,但我也需要安装 python devel:

sudo yum install python-devel

如何从 zip 文件安装 pyobdc? 从 How to connect to Microsoft Sql Server from Ubuntu using pyODBC:

下载源代码 vs apt-get

Ubuntu 中的 apt-get 实用程序确实有一个 pyODBC 版本(2.1.7版)。
但是,它严重过时(2.1.7 vs 3.0.6) ,并且可能无法很好地与更新版本的 unixODBC 和 freetds 一起工作。
如果你想连接到更新的 Microsoft SQL Server 版本(2008年以后) ,这一点尤其重要。
It is recommended that you use the latest versions of unixODBC, freetds and pyODBC when working with the latest Microsoft Sql Server instead of relying on packages in apt-get.

执行以下命令(在 centos 6.5上测试) :

yum install install unixodbc-dev
yum install gcc-c++
yum install python-devel
pip install --allow-external pyodbc --allow-unverified pyodbc pyodbc

按照以下步骤在任何 redhat 版本中安装 pyodbc

yum install unixODBC unixODBC-devel
yum install gcc-c++
yum install python-devel
pip install pyodbc

我知道这是一个老问题,但维护人员有一个 GitHub Repo

我还发现了一个 非常好的安装 FreeTDS 和设置配置文件的例子


在我看来,遵循 GitHub 文档中的说明始终是最佳选择。截至2018年2月,CentOs7(他们在链接上提供所有口味)公司表示:

# Add the RHEL 6 library for Centos-7 of MSSQL driver. Centos7 uses RHEL-6 Libraries.
sudo su
curl https://packages.microsoft.com/config/rhel/6/prod.repo > /etc/yum.repos.d/mssql-release.repo
exit


# Uninstall if already installed Unix ODBC driver
sudo yum remove unixODBC-utf16 unixODBC-utf16-devel #to avoid conflicts


# Install the  msodbcsql unixODBC-utf16 unixODBC-utf16-devel driver
sudo ACCEPT_EULA=Y yum install msodbcsql


#optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y yum install mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc


# optional: for unixODBC development headers
sudo yum install unixODBC-devel


# the Microsoft driver expects unixODBC to be here /usr/lib64/libodbc.so.1, so add soft links to the '.so.2' files
cd /usr/lib64
sudo ln -s libodbccr.so.2   libodbccr.so.1
sudo ln -s libodbcinst.so.2 libodbcinst.so.1
sudo ln -s libodbc.so.2     libodbc.so.1


# Set the path for unixODBC
export ODBCINI=/usr/local/etc/odbc.ini
export ODBCSYSINI=/usr/local/etc
source ~/.bashrc


# Prepare a temp file for defining the DSN to your database server
vi /home/user/odbcadd.txt


[MyMSSQLServer]
Driver      = ODBC Driver 13 for SQL Server
Description = My MS SQL Server
Trace       = No
Server      = 10.100.1.10


# register the SQL Server database DSN information in /etc/odbc.ini
sudo odbcinst -i -s -f /home/user/odbcadd.txt -l


# check the DSN installation with:
odbcinst -j
cat /etc/odbc.ini


# should contain a section called [MyMSSQLServer]


# install the python driver for database connection
pip install pyodbc

我用了这个:

yum install unixODBC.x86_64

取决于 centos 的版本可以改变软件包,你可以这样搜索:

yum search unixodbc

安装 pyodbc 的一个简单方法是使用“ conda”,因为 conda 会自动安装所需的依赖项,包括 unixodbc。

conda --ugrade all(可选)

那么 conda install pyodbc

它将安装以下软件包:

Libgfortran-ng: 7.2.0-hdf63c60 _ 3默认值 mkl: 2018.0.3-1 defaults Mkl _ fft: 1.0.2-py36 _ 0 conda-forge Mkl _ Random: 1.0.1-py36 _ 0 conda-forge Numpy-base: 1.14.5-py36hdbf6ddf _ 0默认值 Pyodbc: 4.0.17-py36 _ 0 conda-forge Unixodbc: 2.3.4-1 conda-forge

同样的问题

After running: sudo apt-get install unixodbc-dev

I was able to pip install pyodbc

Adding one more answer on this question. 对于 Linux Debian Stretch版本,您需要安装以下依赖项:

apt-get update
apt-get install unixodbc-dev
pip install pyodbc

Debian Slim上,一些用户提到他们需要添加 g + +

apt-get update
apt-get install g++ unixodbc-dev
pip install pyodbc

对于 python3.6.8和 ubuntu16.04来说,以上这些都没有帮助到我。

sudo apt-get install python3.6-dev

这解决了我的问题。

根据 微软官方文档 for Ubuntu 18.04,你应该运行下面的命令:

sudo su
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
apt-get update
ACCEPT_EULA=Y apt-get install msodbcsql17
exit

如果您正在使用 python3.7,那么运行以下命令非常重要:

sudo apt-get install python3.7-dev

在我的案例中(亚马逊 Linux AMI) ,上述方法都不管用。以下方法管用(来自 给你的想法) :

  • Find the path to the file cc1plus. For me it was in /usr/libexec/gcc/x86_64-amazon-linux/4.8.5/cc1plus. For you it may vary a bit. Try ls -l /usr/libexec/gcc to find the proper directory name and go ahead.
  • 在路径中查找目录: echo $PATH(对我来说是 /sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin)
  • 将指向 cc1plus的链接放在 PATH: sudo ln -s /PATH/TO/cc1plus /DIRinPATH/中的一个目录中
    以我为例:
    sudo ln -s /usr/libexec/gcc/x86_64-amazon-linux/4.8.5/cc1plus /usr/bin/

这两个来自 给你的命令为我在 RHEL 8工作

sudo dnf install redhat-rpm-config gcc-c++ python3-devel unixODBC-devel
pip3 install --user pyodbc

对于 archlinux/manjaro:

sudo pacman -S unixodbc

然后:

sudo pip install pyodbc

或:

pip install pyodbc

您可以在安装 pyodbc 之前升级您的 pip 砂轮 setuptools (它不会影响 pyodbc 的安装) ,还可以使用:

sudo python -m pip install --upgrade pip wheel setuptools

或者

python -m pip install --upgrade pip wheel setuptools

我已经安装了 unixodbc、 unixodbc-dev 和 python3-dev,但是我仍然得到

      In file included from src/buffer.cpp:12:
src/pyodbc.h:56:10: fatal error: sql.h: No such file or directory
56 | #include <sql.h>
|          ^~~~~~~
compilation terminated.
error: command '/usr/bin/x86_64-unknown-linux-gnu-gcc' failed with exit code 1


还安装了 gcc 和 g + + 。

I'm running pop-os 22.10. I've also checked that odbc.ini and odbcinst.ini exist as well and have FreeTDS installed.