首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python中的azure函数的部署不安装来自requirements.txt的依赖项

python中的azure函数的部署不安装来自requirements.txt的依赖项
EN

Stack Overflow用户
提问于 2019-11-05 04:59:21
回答 1查看 7.6K关注 0票数 3

我有一个简单的python脚本,可以按照这里的指令部署为azure函数。

当脚本被触发(为blob上传的事件网格事件设置)时,它会碰到一个运行时错误:

Microsoft.Azure.WebJobs.Host.FunctionInvocationException:异常执行函数: Functions.imageeventgridtrigger在文件"/azure-functions-host/workers/python/3.6/LINUX/X64/azure_functions_worker/loader.py",第66行中,在load_function mod =importlib.import_module(全称)文件第126行中,在import_module返回_bootstrap._gcd_import(namelevel:,package )中,文件"/home/site/wwwroot/imageeventgridtrigger/__init__.py",第3行,在/src/azure-functions-host/src/WebJobs.Script/Description/OutOfProc/OutOfProcInvoker.cs:line 82*中将numpy导入为np (在Microsoft.Azure.WebJobs.Script.Description.OutOfProcInvoker.InvokeCore(Object[]参数下,FunctionInvocationContext上下文中)

通过vscode集成实现了少量的跟踪部署。需求文件似乎是根据日志输出部分执行的:

10:09:44 AM手稿功能应用程序: Python版本:/opt/python/3.6.9/bin/python 3 10:09:44 AM手稿功能程序:运行pip安装.10:09:47 AM手稿功能应用程序: 04:39:47+0000收集蔚蓝功能-函数(来自-r requirements.txt (第1行)) 10:09:48 AM手稿功能应用程序: 04:39:48+0000下载functions-1.0.4-py3-none-any.whl (108 52) 10:09:48 AM手稿功能应用程序: 04:39:48+0000 Collecting numpy==1.16.4 (来自-r requirements.txt (第2行)) 10:09:50 AM手稿功能应用程序: 04:39:50+0000下载64.whl (17.3MB) 10:09:52 AM手稿功能应用::04:39:52+0000 matplotlib==3.1.0 (来自-r requirements.txt (第3行)) 10:09:53 AM手稿功能应用程序: 04:39:53+0000下载64.whl (13.1MB) 10:10:07 AM手稿功能程序:等待长时间运行命令完成.10: 10 :25 AM手稿功能应用程序: App容器将在10秒内重新启动。10:10:44 AM手稿功能应用:同步触发器..。上午10:10:48 :完成部署到“手稿功能应用程序”。10:10:48 AM手稿功能应用程序:查询触发器.

需求文件还有其他依赖项,但它们不会出现在日志输出中(直到第3行!)。多次尝试部署,但结果相同。Requirements.txt:

代码语言:javascript
复制
azure-functions
numpy==1.16.4
matplotlib==3.1.0
opencv_python==4.1.1.26
scikit_image==0.15.0
scipy==1.2.1
skimage==0.0

Python脚本:

代码语言:javascript
复制
mport json
import logging
import numpy as np
import matplotlib
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
import statistics
import cv2
import os
import scipy
import scipy.signal as ss
import skimage
from skimage.filters import (threshold_otsu, threshold_niblack, threshold_sauvola)
from skimage.restoration import denoise_nl_means, estimate_sigma

import azure.functions as func


def main(event: func.EventGridEvent):
    result = json.dumps({
        'id': event.id,
        'data': event.get_json(),
        'topic': event.topic,
        'subject': event.subject,
        'event_type': event.event_type,
    })

    logging.info('Python EventGrid trigger processed an event: %s', result)
    logging.info('cv2 %s ', cv2.__version__)
    logging.info('matplotlib %s ', matplotlib.__version__)
    logging.info('scipy %s ', scipy.__version__)
    logging.info('skimage %s', skimage.__version__)

如果只在需求中提到了azure函数,则部署和触发器工作正常。这是一个始终处于应用程序服务计划和部署正在发生的Linux。部署有什么问题?

EN

回答 1

Stack Overflow用户

发布于 2019-11-08 12:57:55

解决了这个问题。requirements.txt文件对skimage有一个虚假的条目。python中的导入引用skimage,但需求必须是scikit映像。因为我通过pipereqs生成了文件,所以我忽略了这一点。

奇怪的是,发现部署日志并不容易。蔚蓝功能的vscode终端中的默认输出没有完整的堆栈。但是在Azure扩展选项卡下,有详细的部署日志可供函数应用程序使用,这些应用程序具有调试所需的信息。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58704759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档