我试图从azure函数访问IBMDB 2示例,但是当我将ibm_db包添加到requirement.txt并发布该函数时,在尝试安装该包时,它会出现如下所述的错误
ERROR: Command errored out with exit status 1:
command: /tmp/oryx/platforms/python/3.8.6/bin/python3.8 /tmp/oryx/platforms/python/3.8.6/lib/python3.8/site-packages/pip/_vendor/pep517/in_process/_in_process.py get_requires_for_build_wheel /tmp/tmpohdx5kca
cwd: /tmp/pip-install-ygqaie_9/ibm-db_ae91bb58811d4da4a16cf48bfdca7e17
Complete output (8 lines):
Detected 64-bit Python
Detected platform = linux, uname = x86_64
Downloading https://public.dhe.ibm.com/ibmdl/export/pub/software/data/db2/drivers/odbc_cli/linuxx64_odbc_cli.tar.gz
Downloading DSDriver from url = https://public.dhe.ibm.com/ibmdl/export/pub/software/data/db2/drivers/odbc_cli/linuxx64_odbc_cli.tar.gz
Pre-requisite check [gcc] : Passed
No Python.h header file detected.
Please install python-devel or python3-devel as instructed in "https://github.com/ibmdb/python-ibmdb/blob/master/README.md#KnownIssues" and continue with the installation
目标是能够访问DB2,而不管使用哪种语言。我尝试了Node和.NET,但他们也有自己的问题与这个包(或者我可能做错了什么)
你知道如何避免这种错误吗?
谢谢!
我们的目标是访问DB2并运行SQL语句,但我甚至没有机会安装允许我这样做的包。我尝试将函数的语言改为node和.NET,但它们也有问题
1条答案
按热度按时间km0tfn4u1#
问题是,一些描述
ibm_db
模块安装过程的在线资源没有足够清楚地说明python3-dev
依赖项是一个OS包。简单地将python3-dev
添加到requirements.txt
将不起作用。python3-dev
必须作为操作系统包安装。在Linux中,您可以通过以下方式实现:Azure Functions的特殊问题是默认Azure函数映像不包含
python3-dev
包。让ibm_db
正常工作的唯一方法是使用自定义Docker镜像创建Azure函数,这样你就可以安装python3-dev
和你会遇到的另一个依赖项,即gcc
。有关此主题的有用教程可以在here中找到。另请注意,您使用的Python版本,因为Azure Function运行时(截至撰写本文时的当前版本为4.x)仅支持
GA (Python 3.10, 3.9, 3.8, 3.7)
,请参阅此页面了解支持的版本。考虑到以上内容,Azure Function运行时版本4.x和Python 3.10的
Dockerfile
示例如下:还建议您包含应用程序正在使用的Python包的特定版本,因此,在撰写本文时,使用
ibm_db
驱动程序的Azure Functionrequirements.txt
文件需要包含:最后一点,对于使用苹果芯片(M1、M2等)处理器的Mac用户来说,请确保您使用Rosetta运行终端,以便您可以编译
amd64
架构的Docker镜像,以确保其在Azure中运行。要确认您的终端正在运行Rosetta,请运行arch
命令。你应该得到i386
作为响应。构建amd64
Docker镜像将通过以下命令完成: