简体   繁体   中英

sql.h not found when installing PyODBC on Heroku

I'm trying to install PyODBC on Heroku, but I get fatal error: sql.h: No such file or directory in the logs when pip runs. How do I fix this error?

To follow up on the answer below...

Example for Ubuntu:

sudo apt-get install unixodbc unixodbc-dev

Example for CentOS:

sudo yum install unixODBC-devel

Example for Fedora:

sudo dnf install unixODBC-devel

On Windows:

conn = pyodbc.connect('DRIVER={SQL Server};SERVER=yourserver.yourcompany.com;DATABASE=yourdb;UID=user;PWD=password')

On Linux:

conn = pyodbc.connect('DRIVER={FreeTDS};SERVER=yourserver.yourcompany.com;PORT=1433;DATABASE=yourdb;UID=user;PWD=password;TDS_VERSION=7.2')

You can add Heroku build pack to preinstall required apt packages first

heroku buildpacks:add --index 1 https://github.com/heroku/heroku-buildpack-apt

Add Aptfile in the your directory root and to the repository as well

unixodbc
unixodbc-dev
python-pyodbc
libsqliteodbc

It will install everything you need to work with pyodbc or aioodbc packages from python on Heroku

You need the unixODBC devel package. I don't know what distro you are using but you can google it and build from source.

The other answers are more or less correct; you're missing the unixodbc-dev[el] package for your operating system; that's what pip needs in order to build pyodbc from source.

However, a much easier option is to install pyodbc via the system package manager. On Debian/Ubuntu, for example, that would be apt-get install python-pyodbc . Since pyodbc has a lot of compiled components and interfaces heavily with the UnixODBC OS-level packages, it is probably a better fit for a system package rather than a Python/pip-installed one.

You can still list it as a dependency in your requirements.txt files if you're making code for distribution, but it'll usually be easier to install it via the system PM.

Create a file named Aptfile in the root directory of your project. The content of the file should be:

unixodbc
unixodbc-dev
python-pyodbc

Pass this command on the Command Prompt/shell:

**heroku buildpacks:add --index 1 https://github.com/heroku/heroku-buildpack-apt**

After completing above steps, commit the repository and then push it using

git push heroku master

I recently saw this error in Heroku. To fix this problem I took the following steps:

  1. Add Apt File to the root folder, with the following: unixodbc unixodbc-dev python-pyodbc libsqliteodbc

  2. Commit that

  3. Run heroku buildpacks:clear

  4. Run heroku buildpacks:add --index 1 heroku-community/apt

  5. Push to Heroku

For me the problem was that I previously installed the buildpack for python, which was not needed. By running heroku buildpacks:clear I removed all un-needed buildpacka, then add back the one I needed. So if you do follow these steps be sure to make note of the build packs you need. To view the buildpacks you have run heroku buildpacks before following these steps.

You don't have the required ODBC header files on your machine. You need to run below command to get g++ installed

yum install unixODBC-devel

RedHat/CentOS: dnf install -y unixODBC-devel以及 unixODBC 安装

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM