Heroku部署和pyodbc
Heroku deployment and pyodbc
好的,我已经尝试了好几天在 Heroku 上进行部署。我什至无法升级我在 Heroku 上的帐户来询问如何解决这个问题。
我的计算机上有一个功能齐全的模拟 Django 项目。我最初使用 PythonAnywhere 并喜欢它。直到我意识到 Braintree 不工作并且我无法加载 php,它太受限制了。我确实很喜欢他们。
所以我搬到了 Heroku。 Heroku 的问题是我什至无法将它加载到网站上。我把它连接到我的 GitHub。现在我无法加载它,因为它拒绝构建,因为 pyodbc 不会加载。我知道 sql.h not found when installing PyODBC on Heroku 显示了这一点。我正在开始一个新话题,因为它比较旧。话虽这么说,我在这里尝试了一切。
我认为部分问题是我没有对其中任何一个的 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
您需要使用 Heroku buildpack 安装它:
https://elements.heroku.com/buildpacks/matt-bertoncello/python-pyodbc-buildpack
这将为您提供 Linux pyodbc 和 django-pyodbc 所需的底层 MSODBC 驱动程序。
好的,我已经尝试了好几天在 Heroku 上进行部署。我什至无法升级我在 Heroku 上的帐户来询问如何解决这个问题。
我的计算机上有一个功能齐全的模拟 Django 项目。我最初使用 PythonAnywhere 并喜欢它。直到我意识到 Braintree 不工作并且我无法加载 php,它太受限制了。我确实很喜欢他们。
所以我搬到了 Heroku。 Heroku 的问题是我什至无法将它加载到网站上。我把它连接到我的 GitHub。现在我无法加载它,因为它拒绝构建,因为 pyodbc 不会加载。我知道 sql.h not found when installing PyODBC on Heroku 显示了这一点。我正在开始一个新话题,因为它比较旧。话虽这么说,我在这里尝试了一切。
我认为部分问题是我没有对其中任何一个的 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
您需要使用 Heroku buildpack 安装它:
https://elements.heroku.com/buildpacks/matt-bertoncello/python-pyodbc-buildpack
这将为您提供 Linux pyodbc 和 django-pyodbc 所需的底层 MSODBC 驱动程序。