首页 > 解决方案 > 缺少对 Python Azure 函数的依赖

问题描述

请注意:这在本地运行良好,但仅在使用 azure online 功能时才会出现问题。

错误:

Result: Failure
Exception: ModuleNotFoundError: No module named 'pandas'
Stack:   File "/azure-functions-host/workers/python/3.6/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.6/LINUX/X64/azure_functions_worker/loader.py", line 66, in load_function
    mod = importlib.import_module(fullmodname)
  File "/usr/local/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "/home/site/wwwroot/HttpExample/__init__.py", line 20, in <module>
    import pandas as pd

进口:

import importlib



import logging

import azure.functions as func

import urllib.request
from zipfile import ZipFile
import json
import csv
import os


import pathlib
import os.path
from pathlib import Path
import time
import pandas as pd
from datetime import datetime
from dateutil.relativedelta import relativedelta

要求:

adal==1.2.2
antlr4-python3-runtime==4.7.2
applicationinsights==0.11.9
argcomplete==1.10.0
azure-cli-command-modules-nspkg==2.0.3
azure-cli-core==2.0.76
azure-cli-nspkg==3.0.4
azure-cli-profile==2.1.5
azure-cli-telemetry==1.0.4
azure-common==1.1.23
azure-functions==1.0.4
azure-mgmt-resource==4.0.0
azure-nspkg==3.0.2
bcrypt==3.1.7
certifi==2019.9.11
cffi==1.13.2
chardet==3.0.4
colorama==0.4.1
cryptography==2.8
humanfriendly==4.18
idna==2.8
isodate==0.6.0
jmespath==0.9.4
knack==0.6.3
msrest==0.6.10
msrestazure==0.6.2
numpy==1.17.3
oauthlib==3.1.0
pandas==0.25.3
paramiko==2.6.0
portalocker==1.5.1
pycparser==2.19
Pygments==2.4.2
PyJWT==1.7.1
PyNaCl==1.3.0
pyOpenSSL==19.0.0
python-dateutil==2.8.1
pytz==2019.3
PyYAML==5.1.2
requests==2.22.0
requests-oauthlib==1.2.0
six==1.12.0
tabulate==0.8.5
urllib3==1.25.6

我尝试过的:az account clear & az login。如果我写:func azure functionapp publish air-temperature

这导致错误:There was an error restoring dependencies. ERROR: cannot install cryptography-2.8 dependency: binary dependencies without wheels are not supported. Use the "--build remote" or "--build-native-deps" option to automatically build and configure the dependencies using a Docker container. More information at https://aka.ms/func-python-publish

我没有使用 docker 集成,所以我不能做 --build-native-deps

我正在使用 azure 存储库将其推送到 azure 存储库中,并且它是无缝构建的,没有依赖项或任何错误。但是,如果我通过门户在线运行它,则会出现顶部提到的此错误。

我还尝试在 python 上使用 venv 和 env 并执行 pip freeze > requirements.txt。

标签: pythonazureazure-functions

解决方案


您可以在发布时使用来缓解问题--no-bundler

这里是explanation.

在使用 --build-native-deps 进行一般发布期间,我们尝试使用 Pyinstaller 将您的 requirements.txt 中指定的所有自定义依赖项与我们的运行器(worker)捆绑在一起。我们开始这样做是为了提高您在发布到 Azure Functions 后获得的启动性能。虽然,这个过程是不稳定的,我们正计划摆脱它。

--no-bundler 标志绕过该捆绑过程。因此,我们不使用 Pyinstaller 或任何此类模块进行临时优化。需要注意的是,在到达 API 端点时,您可能会遇到轻微的延迟(冷启动)。


推荐阅读