Sql.h не найден при установке PyODBC на Heroku

Я пытаюсь установить PyODBC на Heroku, но я получаю fatal error: sql.h: No such file or directory в журналах при запуске pip. Как исправить эту ошибку?

Ответы

Ответ 1

Чтобы следить за ответом ниже...

Пример для Ubuntu:

sudo apt-get install unixodbc unixodbc-dev

Пример для CentOS:

sudo yum install unixODBC-devel

В Windows:

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

В Linux:

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

Ответ 2

Вам нужен пакет deixODBC devel. Я не знаю, какое дистрибутив вы используете, но вы можете использовать его и строить из источника.

Ответ 3

Вы можете добавить пакет сборки Heroku для предварительной установки необходимых пакетов apt.

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

Добавьте Aptfile в корневой каталог вашего каталога, а также в хранилище.

unixodbc
unixodbc-dev
python-pyodbc
libsqliteodbc

Он установит все необходимое для работы с pyodbc или aioodbc из python на Heroku.

Ответ 4

Создайте файл с именем Aptfile в корневом каталоге вашего проекта. Содержание файла должно быть:

unixodbc
unixodbc-dev
python-pyodbc

Передайте эту команду в командной строке/оболочке:

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

После выполнения описанных выше шагов зафиксируйте репозиторий и затем нажмите его, используя

git push heroku master

Ответ 5

Другие ответы более или менее правильны; вам не хватает пакета unixodbc-dev[el] для вашей операционной системы; что для pip требуется pip для создания pyodbc из источника.

Однако гораздо проще установить pyodbc через диспетчер системных пакетов. Например, в Debian/Ubuntu это будет apt-get install python-pyodbc. Поскольку pyodbc имеет много компилируемых компонентов и интерфейсов в значительной степени с пакетами на уровне ОС UnixODBC, он, вероятно, лучше подходит для системного пакета, а не для Python/pip-installed.

Вы все равно можете указать его как зависимость в ваших файлах requirements.txt, если вы создаете код для распространения, но обычно его проще установить через систему PM.