无法在Linux上安装pyodbc

时间:2010-06-02 18:14:53

标签: python linux centos pyodbc

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

结尾
  

错误:命令'gcc'因退出状态1而失败

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

  

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

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

18 个答案:

答案 0 :(得分:113)

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

sudo apt-get install unixodbc-dev

使用以下命令安装pip:

sudo apt-get install python-pip

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

pip install pyodbc

答案 1 :(得分:44)

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

  

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

yum install unixODBC-devel

答案 2 :(得分:9)

为此问题再添加一个答案。 对于 Linux Debian Stretch 版本,您需要安装以下依赖项:

''

答案 3 :(得分: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

答案 4 :(得分:7)

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

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

答案 5 :(得分:5)

我已经多次引用这个问题了,然后实际上找到了我在这里寻找的答案: pyodbc wiki

  

为避免在Ubuntu Linux上出现gcc错误,我做了:

sudo aptitude install g++
     

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

     
      
  • python-dev

  •   
  • tdsodbc

  •   

答案 6 :(得分:3)

同样遇到问题

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

我能够点子安装pyodbc

答案 7 :(得分:2)

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

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

yum install gcc-c++

答案 8 :(得分:2)

根据official Microsoft docs(对于Ubuntu 18.04),您应该运行以下命令:

ru2

如果您使用的是python3.7,请务必执行以下操作:

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

答案 9 :(得分: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

答案 10 :(得分:1)

在我的情况下( Amazon Linux AMI ),以上方法均无效。以下工作有效(来自here的想法):

  • 找到文件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/

答案 11 :(得分:1)

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

sudo apt-get install python3.6-dev

这解决了我的问题。

答案 12 :(得分:1)

安装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

答案 13 :(得分:1)

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

我还找到了very good example for installing FreeTDS and setting up the config files

按照GitHub上的说明,docs似乎总是最好的选择。截至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

答案 14 :(得分:1)

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

  

下载源代码与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中的软件包。

答案 15 :(得分:1)

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

sudo yum install python-devel

答案 16 :(得分:0)

我用过这个:

yum install unixODBC.x86_64

根据centos的版本可能会更改包,您可以像这样搜索:

yum search unixodbc

答案 17 :(得分:0)

来自here的这2条命令在RHEL 8中对我有用

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