将模块导入Python Azure Function [英] Import module into Python Azure Function
问题描述
我正在尝试创建一个简单的Azure函数,该函数接收一个HTTP事件,在该请求的主体中获取一个JSON对象,并将该对象另存为CosmosDB集合中的文档.但是,我似乎迷上了导入python模块的过程.
I'm trying to make a simple Azure Function that receives an HTTP event, grabs a JSON object in the body of that request, and saves that object as a document in a CosmosDB collection. I seem to be getting hung up on importing a python module however.
__ 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
,但这似乎无法解决问题.
I have tried going through Kudu like this question suggested Importing Python modules for Azure Function and tried running pip install azure-cosmos
but that doesn't seem to fix the problem.
推荐答案
您需要在Function App KUDU中添加python扩展名.
You need to add python extension in your Function App KUDU.
第1步:要安装自定义Python版本
Step1: To Install Custom Python Version
导航到Kudu控制台-https://Your_APP_NAME.scm.azurewebsites.net/DebugConsole
在kudu cli中运行以下命令以在D:\ home \ site \ tools文件夹中安装Python
Navigate to Kudu Console - https://Your_APP_NAME.scm.azurewebsites.net/DebugConsole
Run Below command in kudu cli to install Python in D:\home\site\tools Folder
nuget.exe安装-源 https://www.siteextensions.net/api/v2/ -OutputDirectory D:\ home \ site \ tools python352x64
nuget.exe install -Source https://www.siteextensions.net/api/v2/ -OutputDirectory D:\home\site\tools python352x64
Step2 :我们需要在D:\home\site\tools Folder
中安装python.exe.因此,让我们移动子文件夹的内容(D:\home\site\tools\python352x64.3.5.2.6\content\Python35
)到D:\home\site\tools
,使用以下命令
Step2: We need to have python.exe in D:\home\site\tools Folder
. so lets move sub-folder content(D:\home\site\tools\python352x64.3.5.2.6\content\Python35
) to D:\home\site\tools
using below command
mv /d/home/site/tools/python352x64.3.5.2.6/content/python35/* /d/home/site/tools/
第3步:要安装自定义python软件包.
Step3: To Install custom python package.
导航到Kudu控制台- https://Your_APP_NAME.scm.azurewebsites.net/DebugConsole 运行以下命令以在功能应用程序中安装熊猫模块:
Navigate to Kudu Console - https://Your_APP_NAME.scm.azurewebsites.net/DebugConsole Run below command to install pandas module in function app:
D:\home\site\tools\python.exe -m pip install azure-cosmos
测试示例:
Test example:
我安装了requests
软件包以进行一些测试.
I installed requests
package to do a little test.
D:\home\site\tools\python.exe -m pip install requests
python代码:
输出:
这篇关于将模块导入Python Azure Function的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!