Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Installing pyodbc fails on OSX 10.9 (Mavericks)

When running pip install pyodbc, I get

In file included from .../build/pyodbc/src/buffer.cpp:12:     .../build/pyodbc/src/pyodbc.h:52:10: fatal error: 'sql.h' file not found     #include <sql.h>              ^     1 error generated.     error: command 'cc' failed with exit status 1 

It seems that Mavericks has no sql.h under /usr/include

Did anyone manage to install pyodbc? Is there a known workaround?

like image 766
Moshe Avatar asked Nov 19 '13 14:11

Moshe


People also ask

Does Pyodbc work on Mac?

Does Pyodbc work on Mac? pyodbc is an open source Python module that makes accessing ODBC databases simple. It implements the DB API 2.0 specification but is packed with even more Pythonic convenience. Precompiled binary wheels are provided for most Python versions on Windows and macOS.


2 Answers

You can use Homebrew to install unixodbc, then pyodbc via pip in the usual fashion.

brew install unixodbc && pip install pyodbc 

This works for me on Mavericks.

like image 50
Ryan Balfanz Avatar answered Sep 28 '22 07:09

Ryan Balfanz


As you noticed OSX Mavericks dropped sql headers that are required for PyODBC compilation. Following these steps allowed me to install PyODBC:

  1. Make sure you have iODBC library installed (http://www.iodbc.org/)
  2. Download and extract iODBC sources
  3. Run pip install --no-install pyodbc
  4. cd [VIRTUAL_ENV]/build/pyodbc
  5. Run python setup.py build_ext --include-dirs=[LIBIODBC_SOURCES]/include/
  6. Run pip install --no-download pyodbc:

    Installing collected packages: pyodbc   Running setup.py install for pyodbc      warning: no files found matching 'tests/*' Successfully installed pyodbc Cleaning up... 

I could as well copy the files under [libiodbc_sources]/include/ to my /usr/include and just run pip install pyodbc, but I didn't want to add files manually to system folders.

like image 41
m_vitaly Avatar answered Sep 28 '22 09:09

m_vitaly