Развертывание Heroku и pyodbc

Итак, я несколько дней пытался развернуть на Heroku. Я даже не могу обновить свою учетную запись на Heroku, чтобы задать вопрос, как это сделать.

У меня есть полностью функционирующий эмулируемый проект Django на моем компьютере. Сначала я использовал PythonAnywhere, и мне это понравилось. Пока я не понял, что Braintree не работает, и я не могу загрузить php, он слишком ограничен. У меня с ними галочка.

Поэтому я переехал в Heroku. Проблема с Heroku в том, что я даже не могу загрузить его на сайт. Я подключил его к моему GitHub. Теперь я не могу его загрузить, потому что он отказывается собираться из-за того, что pyodbc не загружается. Я знаю, что это показано sql.h не найден при установке PyODBC на Героку. Создаю новую тему, так как она старая. При этом я пробовал все здесь.

Я думаю, что часть проблемы заключается в том, что у меня нет доступа sudo ни к одному из них. Я попытался войти в систему с паролем учетной записи su, но, видимо, у нас нет такого доступа. Я пробовал собирать пакеты на Heroku, но они, похоже, не хотят работать с библиотекой pyodbc. Я также думал над дополнением к Heroku, но тогда мне все равно пришлось бы изменить много кода.

Есть ли способ для чайников исправить это? Моя сестра, которая много лет работала программистом, не может заставить его работать. Тогда я, новичок, не могу. Таким образом, у нас есть большой спектр опыта между нами. Извините за разглагольствования, я буквально потратил более 40 часов, пытаясь развернуть это.

Running setup.py install for pyodbc: started
           Running setup.py install for pyodbc: finished with status 'error'
           ERROR: Command errored out with exit status 1:
            command: /app/.heroku/python/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-ni8r2oow/pyodbc/setup.py'"'"'; __file__='"'"'/tmp/pip-install-ni8r2oow/pyodbc/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-nkt15se7/install-record.txt --single-version-externally-managed --compile --install-headers /app/.heroku/python/include/python3.9/pyodbc
                cwd: /tmp/pip-install-ni8r2oow/pyodbc/
           Complete output (14 lines):
           running install
           running build
           running build_ext
           building 'pyodbc' extension
           creating build
           creating build/temp.linux-x86_64-3.9
           creating build/temp.linux-x86_64-3.9/src
           gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DPYODBC_VERSION=4.0.30 -I/app/.heroku/python/include/python3.9 -c src/buffer.cpp -o build/temp.linux-x86_64-3.9/src/buffer.o -Wno-write-strings
           In file included from src/buffer.cpp:12:
           src/pyodbc.h:56:10: fatal error: sql.h: No such file or directory
              56 | #include <sql.h>
                 |          ^~~~~~~
           compilation terminated.
           error: command '/usr/bin/gcc' failed with exit code 1
           ----------------------------------------
       ERROR: Command errored out with exit status 1: /app/.heroku/python/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-ni8r2oow/pyodbc/setup.py'"'"'; __file__='"'"'/tmp/pip-install-ni8r2oow/pyodbc/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-nkt15se7/install-record.txt --single-version-externally-managed --compile --install-headers /app/.heroku/python/include/python3.9/pyodbc Check the logs for full command output.
 !     Push rejected, failed to compile Python app.
 !     Push failed

person w j    schedule 31.05.2021    source источник


Ответы (1)


Вам нужно установить его с пакетом сборки Heroku:

https://elements.heroku.com/buildpacks/matt-bertoncello/python-pyodbc-buildpack

Это даст вам базовый драйвер MSODBC для Linux, необходимый для pyodbc и django-pyodbc.

person FlipperPA    schedule 31.05.2021
comment
поэтому я сделал это и никогда не мог заставить это работать. Хотя, возможно, я делал это неправильно. пакеты сборки heroku: добавить heroku-community/apt -a momandpops пакеты сборки heroku: добавить heroku/python -a momandpops пакеты сборки heroku: добавить github.com/matt-bertoncello/python-pyodbc-buildpack.git — мама и попс. Это команды, которые я использовал. Это неправильно? - person w j; 01.06.2021
comment
Есть ли лучший документ о том, КАК это реализовать? Как, может быть, мы делали это неправильно? - person w j; 01.06.2021
comment
Итак, я был действительно сбит с толку тем, как сделать пакет сборки. Я думал, что это папка с файлами внутри. Нет. Вы создаете файл APT в корневом каталоге с помощью блокнота ++, помещая упомянутые элементы в текст. Затем сохраните его как APT и без расширения. - person w j; 02.06.2021