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.