如何在Azure Function Linux应用程序中安装python模块

Jos*_*icz 5 python pip azure-functions

我正在尝试在 Azure 函数中为我的 python 脚本安装模块。我已阅读有关使用 Kudu 工具进行 pip 安装的文档。但是,Linux 应用程序不允许这样做。此外,微软似乎已经不再支持在 Windows 操作系统上运行 Python Azure Functions。以下是我到目前为止所拥有的。

编辑更新:我做了更多研究,发现安装 python 模块的方法是通过使用 venv,然后将 venv(安装了 pip 包)部署到 Azure Function。我在安装了 pip 软件包的文件夹路径中创建了 venv,但问题仍然存在。

文件夹结构

 -FunctionApp
    -MainFunction
      -_init_.py
      -functions.json
 -Requirements.txt
Run Code Online (Sandbox Code Playgroud)

Requiremtents.txt 文件包含:

psycopg2 == 2.8.5
yfinance == 0.1.54
Run Code Online (Sandbox Code Playgroud)

Init .py文件包含以下代码,用于导入 requests.txt 文件中引用的模块:

import psycopg2
import yfinance
Run Code Online (Sandbox Code Playgroud)

当我尝试在 Azure 门户中运行该函数时,出现以下错误:

Result: Result: Failure Exception: ImportError: libpq.so.5: cannot open shared object file: No such file or directory Stack: File "/azure-functions-host/workers/python/3.7/LINUX/X64/azure_functions_worker/dispatcher.py", line 242, in _handle__function_load_request func_request.metadata.entry_point) File "/azure-functions-host/workers/python/3.7/LINUX/X64/azure_functions_worker/loader.py", line 66, in load_function mod = importlib.import_module(fullmodname) File "/usr/local/lib/python3.7/importlib/__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1006, in _gcd_import File "<frozen importlib._bootstrap>", line 983, in _find_and_load File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed File "<frozen importlib._bootstrap>", line 1006, in _gcd_import File "<frozen importlib._bootstrap>", line 983, in _find_and_load File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 677, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 728, in exec_module File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed File "/home/site/wwwroot/Navi_Function_Notifier/__init__.py", line 3, in <module> import psycopg2 File "/home/site/wwwroot/.python_packages/lib/site-packages/psycopg2/__init__.py", line 51, in <module> from psycopg2._psycopg import ( # noqa
Run Code Online (Sandbox Code Playgroud)

如果有人能够在 Linux 上的 Azure Function 中导入 python 模块,我将非常感谢您的指导!

Hur*_*hen 4

看来您的“requirements.txt”位置错误,“requirement.txt”文件应该位于函数应用程序文件夹中,但在您的文件夹结构中,它与“FunctionApp”文件夹协调。下面我提供了如何在python函数中安装模块并将其部署到azure的所有步骤,供您参考。

1.运行pip install命令在本地安装python函数中的模块。

pip install psycopg2
pip install yfinance
Run Code Online (Sandbox Code Playgroud)

2.通过运行以下命令生成“requirements.txt”文件:

pip freeze > requirements.txt
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我们可以看到“requirements.txt”是自动生成的,其位置如下图所示。 在此输入图像描述

3.运行以下命令将函数从本地部署到 azure。

func azure functionapp publish <function app name> --build remote
Run Code Online (Sandbox Code Playgroud)

应是您在 azure 门户上创建的函数应用程序的名称。运行该命令后,它会将您的函数部署到azure并根据“requirements.txt”中的模块列表安装模块。

顺便一提:

如果上述步骤不起作用,您可以尝试通过“build local”来部署该功能,运行以下命令:

func azure functionapp publish <function app name> --build local
Run Code Online (Sandbox Code Playgroud)

此命令将在本地构建您的函数并将其部署到 azure(包括所有模块)。

希望有帮助~