I am running Linux (2.6.18-164.15.1.el5.centos.plus) and trying to install pyodbc. I am doing pip install pyodbc and get a very long list of errors, which end in
error: command ‘gcc’ failed with exit status 1
I looked in /root/.pip/pip.log and saw the following:
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 failed with error code 1
Has anybody had a similar issue installing pyodbc?
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
On Ubuntu, you’ll need to install unixodbc-dev:
sudo apt-get install unixodbc-dev
Install pip by using this command:
sudo apt-get install python-pip
once that is installed, you should be able to install pyodbc successfully:
pip install pyodbc
Method 2
I resolved my issue by following correct directions on pyodbc – Building wiki which states:
On Linux, pyodbc is typically built using the unixODBC headers, so you will need unixODBC and its headers installed. On a RedHat/CentOS/Fedora box, this means you would need to install unixODBC-devel:
yum install unixODBC-devel
Method 3
Adding one more answer on this question.
For Linux Debian Stretch release you would need to install the following dependencies:
apt-get update apt-get install unixodbc-dev pip install pyodbc
On Debian Slim some users mentioned they needed to add g++
apt-get update apt-get install g++ unixodbc-dev pip install pyodbc
Method 4
Struggled with the same issue
After running:
sudo apt-get install unixodbc-dev
I was able to pip install pyodbc
Method 5
Follow below steps to install pyodbc in any redhat version
yum install unixODBC unixODBC-devel yum install gcc-c++ yum install python-devel pip install pyodbc
Method 6
I have referenced this question several times, and gone on to actually find the answer I was looking for here:
pyodbc wiki
To avoid gcc error on Ubuntu Linux, I did:
sudo aptitude install g++I also installed the following 2 packages from Synaptic:
- python-dev
- tdsodbc
Method 7
Execute the following commands (tested on 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
Method 8
According to official Microsoft docs for Ubuntu 18.04 you should run next commands:
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
If you are using python3.7, it is very important to run:
sudo apt-get install python3.7-dev
Method 9
A easy way to install pyodbc is by using ‘conda’. As conda automatically installs required dependencies including unixodbc.
conda --ugrade all (optional)
then
conda install pyodbc
it will install following packages:
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
Method 10
I had the same problem on CentOS 5.5
In addition to installing unixODBC-devel I also had to install gcc-c++
yum install gcc-c++
Method 11
In my case (Amazon Linux AMI) none of the above worked. The following worked (idea from here):
- 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. Tryls -l /usr/libexec/gccto find the proper directory name and go ahead. - Find directories in your path:
echo $PATH(for me it was/sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin) - Put a link to
cc1plusin one of the directories in your PATH:sudo ln -s /PATH/TO/cc1plus /DIRinPATH/
For example in my case:
sudo ln -s /usr/libexec/gcc/x86_64-amazon-linux/4.8.5/cc1plus /usr/bin/
Method 12
I needed all that, but I also needed python devel installed:
sudo yum install python-devel
Method 13
How about installing pyobdc from zip file? From How to connect to Microsoft Sql Server from Ubuntu using pyODBC:
Download source vs apt-get
The apt-get utility in Ubuntu does have a version of pyODBC. (version 2.1.7).
However, it is badly out-of-date (2.1.7 vs 3.0.6) and may not work well with the newer versions of unixODBC and freetds.
This is especially important if you are trying to connect to later versions of Microsoft Sql Server (2008 onwards).
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.
Method 14
I know this is an old question, but the maintainer has a pyodbc GitHub Repo.
I also found a very good example for installing FreeTDS and setting up the config files.
Following the instructions on the GitHub docs seems to me to always be the best option. As of February, 2018, for CentOs7 (they have all flavors at the link) they say:
# 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
Method 15
For archlinux/manjaro:
sudo pacman -S unixodbc
then:
sudo pip install pyodbc
or:
pip install pyodbc
You can upgrade your pip wheel setuptools before installing pyodbc (it won’t affect the pyodbc installation) also with:
sudo python -m pip install --upgrade pip wheel setuptools
or
python -m pip install --upgrade pip wheel setuptools
Method 16
I used this:
yum install unixODBC.x86_64
Depending on the version of centos could change the package, you can search like this:
yum search unixodbc
Method 17
I faced with same issue. For python3.6.8 and ubuntu 16.04 none of above did not help me.
sudo apt-get install python3.6-dev
This solved my problem.
Method 18
These 2 commands from here worked for me in RHEL 8
sudo dnf install redhat-rpm-config gcc-c++ python3-devel unixODBC-devel pip3 install --user pyodbc
Method 19
I have unixodbc, unixodbc-dev and python3-dev all installed, but I still get
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 and g++ are installed as well.
I’m running pop-os 22.10. I’ve also checked that odbc.ini and odbcinst.ini exist as well and have FreeTDS installed.
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0