106

我正在运行 Linux (2.6.18-164.15.1.el5.centos.plus) 并尝试安装 pyodbc。我正在做 pip install pyodbc 并得到一个很长的错误列表,以

错误:命令“gcc”失败,退出状态为 1

我查看了 /root/.pip/pip.log并看到以下内容:

InstallationError: Command /usr/local/bin/python -c "import setuptools; file ='/home/build/pyodbc/setup.py'; execfile('/home/build/pyodbc/setup.py')" install - -single-version-externally-managed --record /tmp/pip-7MS9Vu-record/install-record.txt 失败,错误代码为 1

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

4

18 回答 18

216

在 Ubuntu 上,您需要安装 unixodbc-dev:

sudo apt-get install unixodbc-dev

使用以下命令安装 pip:

sudo apt-get install python-pip

安装完成后,您应该能够成功安装 pyodbc:

pip install pyodbc
于 2012-01-31T21:44:25.677 回答
63

我通过遵循pyodbc - Building wiki上的正确指示解决了我的问题,其中指出:

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

yum install unixODBC-devel
于 2010-06-02T18:27:22.297 回答
36

在这个问题上再添加一个答案。对于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
于 2018-08-17T11:52:10.370 回答
17

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

yum install unixODBC unixODBC-devel
yum install gcc-c++
yum install python-devel
pip install pyodbc
于 2017-02-20T11:35:33.467 回答
16

为同样的问题而苦苦挣扎

运行后: sudo apt-get install unixodbc-dev

我能够 pip install pyodbc

于 2018-07-21T10:19:32.463 回答
9

我已经多次引用这个问题,并继续实际找到我在这里寻找的答案: pyodbc wiki

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

sudo aptitude install g++

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

  • 蟒蛇开发

  • tdsodbc

于 2012-07-08T18:46:50.740 回答
8

执行以下命令(在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
于 2015-03-23T05:21:42.190 回答
6

根据Ubuntu 18.04 的官方 Microsoft 文档,您应该运行以下命令:

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

于 2019-03-26T12:21:20.833 回答
4

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

conda --ugrade all(选修的)

然后 conda install pyodbc

它将安装以下软件包:

libgfortran-ng: 7.2.0-hdf63c60_3 defaults 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 defaults pyodbc: 4.0.17-py36_0 conda-forge unixodbc: 2.3.4-1 conda-forge

于 2018-06-15T08:46:18.317 回答
3

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

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

yum install gcc-c++
于 2011-11-02T18:58:45.867 回答
3

就我而言(Amazon Linux AMI),上述方法均无效。以下工作(来自这里的想法):

  • 找到文件的路径cc1plus。对我来说,它在/usr/libexec/gcc/x86_64-amazon-linux/4.8.5/cc1plus. 对你来说,它可能会有所不同。尝试ls -l /usr/libexec/gcc找到正确的目录名称并继续。
  • 在您的路径中查找目录:(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/
于 2019-09-17T21:50:29.233 回答
1

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

sudo yum install python-devel
于 2013-06-08T12:44:41.220 回答
1

从 zip 文件安装 pyobdc 怎么样?从如何使用 pyODBC 从 Ubuntu 连接到 Microsoft Sql Server

下载源 vs apt-get

Ubuntu 中的 apt-get 实用程序确实有一个 pyODBC 版本。(版本 2.1.7)。
但是,它已经严重过时(2.1.7 与 3.0.6),并且可能不适用于较新版本的 unixODBC 和 freetds。
如果您尝试连接到更高版本的 Microsoft Sql Server(2008 及更高版本),这一点尤其重要。
建议您在使用最新的 Microsoft Sql Server 时使用最新版本的 unixODBC、freetds 和 pyODBC,而不是依赖 apt-get 中的包。

于 2014-07-03T06:06:59.270 回答
1

我知道这是一个老问题,但维护者有一个pyodbcGitHub 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
于 2018-02-06T05:40:23.123 回答
1

我面临同样的问题。对于 python3.6.8 和 ubuntu 16.04,以上都没有帮助我。

sudo apt-get install python3.6-dev

这解决了我的问题。

于 2019-01-25T08:51:28.510 回答
1

对于archlinux/manjaro:

sudo pacman -S unixodbc

然后:

sudo pip install pyodbc

或者:

pip install pyodbc

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

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

或者

python -m pip install --upgrade pip wheel setuptools
于 2020-08-11T05:01:25.043 回答
0

我用这个:

yum install unixODBC.x86_64

根据centos的版本可能会改变包,你可以这样搜索:

yum search unixodbc
于 2018-04-16T13:46:49.257 回答
0

这里的这 2 个命令在 RHEL 8 中对我有用

sudo dnf install redhat-rpm-config gcc-c++ python3-devel unixODBC-devel
pip3 install --user pyodbc
于 2020-07-02T11:53:07.470 回答