无法在Linux上安装Pyodbc


83

我正在运行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')”安装- -单一版本-外部管理的--record /tmp/pip-7MS9Vu-record/install-record.txt失败,错误代码为1

安装pyodbc是否有人遇到类似问题?

Answers:


155

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

sudo apt-get install unixodbc-dev

使用以下命令安装pip:

sudo apt-get install python-pip

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

pip install pyodbc

在此之前,我还需要安装python-devel。
迈克

是的!!!这是我使用的第五种解决方案,并且有效了,谢谢:)
芬妮(Fanny)

可行!我收到一个错误“找不到包”,但是先运行sudo apt-get update修复了它。
克里斯(ChrisE)

1
对于Ubuntu上的python 3.7,还需要运行sudo apt-get install python3.7-dev
Milos Grujic

57

我通过遵循有关pyodbc的正确指导来解决我的问题-Building Wiki指出:

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

yum install unixODBC-devel

它对我来说失败... SyntaxError:语法无效的文件“ / usr / libexec / urlgrabber-ext-down”,除OSError外,第28行,e:^ SyntaxError:无效语法用户取消时退出
famargar

@famargar您升级了Linux发行版吗?
IgorGanapolsky

我正在使用Centos 7和Linux 3.10.0-957.5.1.el7.x86_64。他们是否知道pyodbc有问题?
famargar

17

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

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

在Debian Slim映像上,我需要先包含g ++,然后才能安装pyodbc。
Snympi '18年

@Snympi Yep,这就是上面的命令包括apt-get install g++;)的原因
Alexis.Rolland

1
非常感谢,您的回答在我的Debian GNU / Linux 9上有效,但是g ++可以忽略不计。
CK



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

6

我已经多次参考了这个问题,然后继续在这里找到我一直在寻找的答案: pyodbc Wiki

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

sudo aptitude install g++

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

  • python开发

  • tdsodbc


或者,如果您使用的是Ubuntu:sudo apt-get install g++之后,我可以将安装点播到venv中。谢谢!
cheevahagadog


3

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


3

根据针对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


1

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

sudo yum install python-devel

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中的软件包。


1
编译终止。错误:命令'i686-linuxgnu-gccc'失败,退出状态为1
jarppa79

警告:命令行选项ä-Wstrict-prototypes对c / Objc有效,但对C ++无效[默认启用]
jarppa79

apt-get install aptitude aptitude install g ++ apt-get install python-dev python ./setup.py install
jarppa79

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

嗨,Shubham,对不起,我不明白你的问题。键入之后pip install pyodbc,假设其他一切正常,您将同时安装驱动程序和软件包并可用。您将“简单地使用”该程序包,从而创建连接对象和游标,类似于对数据库的任何其他编程访问。您可以查看其文档以获取示例。
迈克·威廉姆森


1

在我的情况下(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/

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

0

我用这个:

yum install unixODBC.x86_64

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

yum search unixodbc

0

从这些2级的命令这里在RHEL为我工作8

sudo dnf install redhat-rpm-config gcc-c++ python3-devel unixODBC-devel
pip3 install --user pyodbc
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.