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:
Add Apt File
to the root folder, with the following: unixodbc unixodbc-dev python-pyodbc libsqliteodbc
Commit that
Run heroku buildpacks:clear
Run heroku buildpacks:add --index 1 heroku-community/apt
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.