在Heroku

时间:2015-07-11 03:31:07

标签: python heroku pyodbc

我试图在Heroku上安装PyODBC,但是当pip运行时我在日志中得到fatal error: sql.h: No such file or directory。如何解决此错误?

8 个答案:

答案 0 :(得分:75)

跟进以下答案...

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')

答案 1 :(得分:6)

您需要unixODBC开发包。我不知道你正在使用什么发行版,但你可以google它并从源代码构建。

答案 2 :(得分:4)

您可以添加Heroku构建包以预先安装所需的apt软件包

unixodbc
unixodbc-dev
python-pyodbc
libsqliteodbc

在您的目录根目录中添加pyodbc,并在

中添加{/ 1}
aioodbc

它将安装在Heroku上使用python的"serve": { "port": 443, "host": "0.0.0.0" } MVN_VERSION := $(shell mvn -q -Dexec.executable="echo" -Dexec.args='$${project.version}' --non-recursive exec:exec) 个包所需的一切

答案 3 :(得分:0)

在项目的根目录中创建一个名为 Aptfile 的文件。该文件的内容应为:

unixodbc
unixodbc-dev
python-pyodbc

在命令提示符/外壳上传递此命令:

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

完成上述步骤后,提交存储库,然后使用

将其推送
git push heroku master

答案 4 :(得分:0)

我最近在Heroku中看到此错误。要解决此问题,我采取了以下步骤:

  1. Apt File添加到根文件夹中,内容如下: unixodbc unixodbc-dev python-pyodbc libsqliteodbc

  2. 提交

  3. 运行heroku buildpacks:clear

  4. 运行heroku buildpacks:add --index 1 heroku-community/apt

  5. 推送到Heroku

对我来说,问题是我以前为python安装了buildpack,这是不需要的。通过运行heroku buildpacks:clear,我删除了所有不需要的buildpacka,然后重新添加所需的buildpacka。因此,如果您遵循这些步骤,请务必记下所需的构建包。要查看构建包,请按照以下步骤运行heroku buildpacks

答案 5 :(得分:0)

RedHat / CentOS: dnf install -y unixODBC-devel 以及unixODBC安装

答案 6 :(得分:0)

您的机器上没有所需的 ODBC 头文件。 你需要运行下面的命令来安装 g++

yum install unixODBC-devel

答案 7 :(得分:-1)

其他答案或多或少是正确的;您错过了操作系统的unixodbc-dev[el]包;这是pip从源代码构建pyodbc所需的内容。

但是,更容易的选择是通过系统包管理器安装pyodbc。例如,在Debian / Ubuntu上,这将是apt-get install python-pyodbc。由于pyodbc在UnixODBC操作系统级别的软件包中有很多编译组件和接口,因此它可能更适合系统软件包而不是Python / pip安装软件包。

如果您要为分发制作代码,您仍然可以将其列为requirements.txt文件中的依赖项,但通过系统PM安装它通常会更容易。