将模块导入 Python Azure Function

2023-12-04

我正在尝试创建一个简单的 Azure 函数,它接收 HTTP 事件,获取该请求正文中的 JSON 对象,并将该对象保存为 CosmosDB 集合中的文档。然而,我似乎对导入 python 模块很着迷。

__init__.py

import json
import azure.functions as func
import azure.cosmos.cosmos_client as cosmos_client


config = {
  'ENDPOINT': 'https://XXXXXX.documents.azure.com:443/',
  'PRIMARYKEY': 'XXXXXX',
  'DATABASE': 'my-database',
  'CONTAINER': 'my-container'
}

def main(req: func.HttpRequest) -> func.HttpResponse:
  try:
    client = cosmos_client.CosmosClient(config['ENDPOINT'], {'masterKey': config['PRIMARYKEY']})
    results = req.get_json()

    client.get_database_client(config['DATABASE']).get_container_client(config['CONTAINER']).upsert_item(results)

    return func.HttpResponse("Success", status_code=200)
  except ValueError:
    return func.HttpResponse("Please pass a JSON object", status_code=400)

错误日志

019-07-11T22:51:22.613140092Z: [INFO]  Microsoft.Azure.WebJobs.Host.FunctionInvocationException: Exception while executing function: Functions.save-to-cosmos ---> Microsoft.Azure.WebJobs.Script.Rpc.RpcException: Result: Failure
2019-07-11T22:51:22.616516971Z: [INFO]  Exception: ModuleNotFoundError: No module named 'azure.cosmos'
2019-07-11T22:51:22.616547173Z: [INFO]  Stack:   File "/usr/local/lib/python3.6/site-packages/azure/functions_worker/dispatcher.py", line 230, in _handle__function_load_request
2019-07-11T22:51:22.632613023Z: [INFO]      func_request.metadata.entry_point)
2019-07-11T22:51:22.632631824Z: [INFO]    File "/usr/local/lib/python3.6/site-packages/azure/functions_worker/loader.py", line 66, in load_function
2019-07-11T22:51:22.632637524Z: [INFO]      mod = importlib.import_module(fullmodname)
2019-07-11T22:51:22.632641725Z: [INFO]    File "/usr/local/lib/python3.6/importlib/__init__.py", line 126, in import_module
2019-07-11T22:51:22.632646025Z: [INFO]      return _bootstrap._gcd_import(name[level:], package, level)
2019-07-11T22:51:22.632650325Z: [INFO]    File "<frozen importlib._bootstrap>", line 994, in _gcd_import
2019-07-11T22:51:22.632655025Z: [INFO]    File "<frozen importlib._bootstrap>", line 971, in _find_and_load
2019-07-11T22:51:22.632660926Z: [INFO]    File "<frozen importlib._bootstrap>", line 941, in _find_and_load_unlocked
2019-07-11T22:51:22.632682827Z: [INFO]    File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
2019-07-11T22:51:22.632688427Z: [INFO]    File "<frozen importlib._bootstrap>", line 994, in _gcd_import
2019-07-11T22:51:22.632692727Z: [INFO]    File "<frozen importlib._bootstrap>", line 971, in _find_and_load
2019-07-11T22:51:22.632697128Z: [INFO]    File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
2019-07-11T22:51:22.632723529Z: [INFO]    File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
2019-07-11T22:51:22.632729029Z: [INFO]    File "<frozen importlib._bootstrap_external>", line 678, in exec_module
2019-07-11T22:51:22.632733329Z: [INFO]    File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
2019-07-11T22:51:22.632737430Z: [INFO]    File "/home/site/wwwroot/save-to-cosmos/__init__.py", line 3, in <module>
2019-07-11T22:51:22.632741830Z: [INFO]      import azure.cosmos.cosmos_client as cosmos_client

我尝试过像这个问题建议的那样通过 Kudu为 Azure Function 导入 Python 模块并尝试跑步pip install azure-cosmos但这似乎并不能解决问题。


您需要在 Function App KUDU 中添加 python 扩展。

Step1:安装自定义Python版本

导航到 Kudu 控制台 -https://Your_APP_NAME.scm.azurewebsites.net/DebugConsole在 kudu cli 中运行以下命令将 Python 安装在 D:\home\site\tools 文件夹中

nuget.exe 安装-源https://www.siteextensions.net/api/v2/-输出目录 D:\home\site\tools python352x64

Step2:我们需要有 python.exeD:\home\site\tools Folder。所以让我们移动子文件夹内容(D:\home\site\tools\python352x64.3.5.2.6\content\Python35 ) to D:\home\site\tools使用下面的命令

mv /d/home/site/tools/python352x64.3.5.2.6/content/python35/* /d/home/site/tools/

Step3:安装自定义 python 包。

导航到 Kudu 控制台 -https://Your_APP_NAME.scm.azurewebsites.net/DebugConsole运行以下命令在函数应用程序中安装 pandas 模块:

D:\home\site\tools\python.exe -m pip install azure-cosmos

测试示例:

我安装了requests包做一点测试。

 D:\home\site\tools\python.exe -m pip install requests

enter image description here

蟒蛇代码:

enter image description here

Output:

enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将模块导入 Python Azure Function 的相关文章

随机推荐

  • 无法安装 xkcd 字体

    我正在按照小插图中给出的说明尝试 xkcd 字体 vignette xkcd intro 但是执行以下步骤时出现错误 gt system cp xkcd tff t fonts cp xkcd tff No such file or dir
  • 使用sql查询将图像大小从150 * 150更改为70 * 70?

    我将图像存储在 SQL Server 2008 R2 数据库中名为 image1 的 varBinary max 列中 其大小为 150 150 我添加了另一列名为 image2 varBinary max 的列 我需要使用 image1
  • Firefox 文本区域大小调整错误?

    我正在尝试仅使用 CSS 创建一个固定的文本区域来填充浏览器窗口的整个宽度和高度 并且以下内容在 Chrome 中完美运行 textarea border 2px solid 3D6AA2 padding 5px position fixe
  • 从 MSBuild 发布中排除“.js”文件,但不排除“.min.js”文件

    使用 Visual Studio 和 MSBuild 我希望能够排除所有 js文件并包含所有 min js我的部署中的文件 我知道这可以使用 Visual Studio 中的文件属性来实现 但这不是一个选项 因为文件太多了 我有以下内容Pu
  • 数组初始化函数

    我在玩 C 时偶然发现了这个问题 我正在尝试初始化堆上的数组指针 它在initialize 它输出的地方69 但在main 它因错误而崩溃EXC BAD ACCESS include
  • 在 Java 中将 MP3 转换为 PCM

    我想用Java将MP3文件转换为PCM 怎么做 Get the mp3plugin jarJMF 的 将其添加到应用程序的运行时类路径中 为MP3提供解码器SPI Get an AudioInputStream对于 MP3 从AudioSy
  • Chrome 扩展程序弹出窗口关闭时是否有事件?

    我已经尝试过 window unload window beforeunload 等 我正在寻找一种在弹出窗口关闭后通知我的后台页面的方法 你可以试试这个 连接到您的后台页面chrome runtime connect or chrome
  • InnoSetup,展开环境变量(使用 {reg:...} 从注册表值获取)

    我尝试从注册表设置默认安装路径 DefaultDirName reg HKCU Software Microsoft VisualStudio 14 0 VisualStudioLocation userdocs Visual Studio
  • 如何将大写字母更改为小写字母,将空格更改为下划线

    我想将变量中的大写字符串字符更改为小写 并将空格替换为 我知道我可以对所有实例使用 if 语句 但这会花费太长时间 它将用户的输入保存到文件名中 即 user selection Barracuda Limited what I have
  • 如何将包含图像的跨度置于 div 中居中

    我有一个主 div homeGallery 其中有一个 span imgClass 用于加载图像列表之一 我需要图像在 div 中不仅垂直居中而且水平居中 到目前为止我有这段代码 homeGallery gt imgClass margin
  • 将 base64 字符串转换为 ArrayBuffer

    我需要将 Base64 编码字符串转换为 ArrayBuffer Base64 字符串是用户输入 它们将从电子邮件中复制并粘贴 因此在加载页面时它们不存在 如果可能的话 我想在 javascript 中执行此操作 而不对服务器进行 ajax
  • 如何在 Go 中向子路由器添加中间件?

    我有以下代码 apiRouter mux NewRoute PathPrefix Subrouter Bucket router bucket apiRouter PathPrefix bucket Subrouter bucket Met
  • 通过 PayPal 和信用卡接收付款

    我正在开发一个网站 我需要从 PayPal 和信用卡接收付款 问题是我对此一无所知 我的问题是我在哪里可以找到一些很好的资源来帮助我 或者如果您有一些示例代码 一切可以帮助我的东西 多谢 如果您计划集成 Paypal 您会发现 Paypal
  • 如何向单个sql命令添加超过10000个参数

    我想向单个 sql 命令添加超过 10000 个参数 怎么可能呢 据我所知 一个sql命令有2100个参数 我认为你应该回到 为什么 而不是直接跳到 如何 听起来也许您正在执行一些巨大的插入 更新 在这种情况下 更合适的解决方案是表值参数
  • Android:使多行编辑文本可滚动,在垂直滚动视图中禁用

    我正在开发一个应用程序 其中我在某个点上进行了结构 根据我的应用程序要求 我在 xml 中创建了水平滚动视图 然后在 java 中创建了垂直滚动视图 如下所示 Vertical Scroll view in Linear layout Sc
  • 如何在不使用 fetch 的情况下知道本地仓库与远程仓库不同?

    我有数十个存储库 如果发生任何差异 我的脚本应该更新它们 新提交 新标签 新分支 在我的情况下 对于数十个存储库来说 获取有点慢 我想知道是否有任何快速命令可以满足我的要求 您可以使用git ls remote管道命令无需获取即可获取遥控器
  • Android 蓝牙连接另一个蓝牙设备

    我正在做基于蓝牙的应用程序 我想连接其他设备 例如诺基亚设备和打印机 我参考了android蓝牙文档http developer android com guide topics connectivity bluetooth html 它演
  • * 和 + 正则表达式之间的区别

    谁能告诉我两者之间的区别 and 下例中的运算符 lt gt lt gt 它们每个都是量词 星号量词 表示前面的表达式可以匹配零次或多次 就像 0 而加量词 表示前面的表达式必须匹配至少一次或多次 并且它与 1 回顾一下 a gt a 0
  • 后台工作者如何

    我正在尝试在我的程序中实现后台工作人员 这样当我运行程序并开始检索我需要的数据时它就不会冻结 我不太清楚后台工作者是如何工作的 后台工作人员是在后台运行的线程 它们在不中断 阻塞主线程的情况下工作 您可以阅读更多内容here 简而言之 在
  • 将模块导入 Python Azure Function

    我正在尝试创建一个简单的 Azure 函数 它接收 HTTP 事件 获取该请求正文中的 JSON 对象 并将该对象保存为 CosmosDB 集合中的文档 然而 我似乎对导入 python 模块很着迷 init py import json