Как использовать библиотеку pyodbc в облачной функции Google?

#python #google-cloud-platform #google-cloud-functions #pyodbc

#python #google-облачная платформа #google-cloud-функции #pyodbc

Вопрос:

Я пытаюсь реализовать облачную функцию Google с помощью бета-версии Python 3.8 в качестве среды выполнения при использовании pyodbc модуля. При попытке ее реализации я получаю сообщение об ошибке.

Насколько я понимаю, прочитав другие вопросы Stack Overflow, для использования pyodbc в дистрибутиве Linux вам нужно установить sudo некоторые вещи, прежде чем вы сможете использовать pyodbc , поскольку для этого требуются некоторые ресурсы, специфичные для ОС.

У кого-нибудь есть идея, как это сделать, или знает другой способ заставить pyodbc работать в облачной функции Google?

Ошибка реализации облачных функций Google выдает:

 Build failed: ...: sql.h: No such file or directory
#include <sql.h>
^~~~~~~
compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
----------------------------------------
ERROR: Failed building wheel for pyodbc
Building wheel for pyodbc (setup.py): finished with status 'error'
Running setup.py clean for pyodbc
Successfully built ftputil
Failed to build pyodbc
Installing collected packages: pytz, six, python-dateutil, numpy, pandas, ftputil, pyodbc, setuptools, zope.interface, datetime
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: /opt/python3.8/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-np63kzip/pyodbc/setup.py'"'"'; __file__='"'"'/tmp/pip-install-np63kzip/pyodbc/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'rn'"'"', '"'"'n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-2ijqo8fi/install-record.txt --single-version-externally-managed --home /tmp/pip-target-3prwz462 --compile --install-headers /tmp/pip-target-3prwz462/include/python/pyodbc
cwd: /tmp/pip-install-np63kzip/pyodbc/
Complete output (14 lines):
running install
running build
running build_ext
building 'pyodbc' extension
creating build
creating build/temp.linux-x86_64-3.8
creating build/temp.linux-x86_64-3.8/src
x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fstack-protector-strong -g -Wformat -Werror=format-security -fPIC -DPYODBC_VERSION=4.0.30 -I/opt/python3.8/include/python3.8 -c src/buffer.cpp -o build/temp.linux-x86_64-3.8/src/buffer.o -Wno-write-strings
In file included from src/buffer.cpp:12:0:
src/pyodbc.h:56:10: fatal error: sql.h: No such file or directory
#include <sql.h>
^~~~~~~
compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
  

Ответ №1:

Это невозможно. Для pyodbc проекта требуется unixobdc-dev пакет platform, которого нет в списке системных пакетов, включенных в среду выполнения облачных функций.

Вместо этого вы можете захотеть использовать Cloud Run, который позволяет вам определять собственную среду выполнения и устанавливать любые пакеты платформы, которые вы хотите.