我试图在Heroku上安装PyODBC,但是当pip运行时我在日志中得到fatal error: sql.h: No such file or directory
。如何解决此错误?
答案 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
,并在
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中看到此错误。要解决此问题,我采取了以下步骤:
将Apt File
添加到根文件夹中,内容如下:
unixodbc
unixodbc-dev
python-pyodbc
libsqliteodbc
提交
运行heroku buildpacks:clear
运行heroku buildpacks:add --index 1 heroku-community/apt
推送到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安装它通常会更容易。