如何在Linux消费计划中导入作为Azure函数运行的Python模块?
本地运行的Python代码首先导入以下库:如何在Linux消费计划中导入作为Azure函数运行的Python模块?,python,azure,azure-functions,azure-function-app,Python,Azure,Azure Functions,Azure Function App,本地运行的Python代码首先导入以下库: import logging import azure.functions as func from sendgrid import SendGridAPIClient from datetime import datetime import wikipedia import urllib.request, json 这些也列在requirements.txt()中。我的代码在本地运行得很好,但一旦我上传到Azure函数,就会出现错误(): Modu
import logging
import azure.functions as func
from sendgrid import SendGridAPIClient
from datetime import datetime
import wikipedia
import urllib.request, json
这些也列在requirements.txt()中。我的代码在本地运行得很好,但一旦我上传到Azure函数,就会出现错误():
ModuleNotFoundError:没有名为“sendgrid”的模块
我在别处读到过,您可以通过Kudu在虚拟环境中安装这些模块。但Kudu似乎不受消费计划的支持:
如何在Azure函数的消费计划中使用外部模块/库运行Python代码?我通过单击VS代码中的“部署到函数应用程序”来测试Python代码,并获得成功 然后,我通过如下所示的命令部署了它:
func azure functionapp publish <APP_NAME> --build remote
func azure functionapp发布--构建远程
部署之后,它也可以正常工作
由于我不知道您选择了哪种方式将其从本地部署到azure,如果您尝试了上述两种解决方案但均失败,我认为您可以尝试使用以下命令:
func azure functionapp publish <APP_NAME> --build local
func azure functionapp发布--构建本地
使用--build local选项,从requirements.txt文件读取项目依赖项,并在本地下载和安装这些依赖包。项目文件和依赖项从本地计算机部署到Azure。这将导致更大的部署包上载到Azure。我认为此解决方案不会丢失模块“sendgrid”。只要在requirements.txt中包含一个包名,系统就可以在将应用程序发布到Azure()时自动安装包 我做错的是我包括了这一行:
from sendgrid import SendGridAPIClient
但未能显式导入sendgrid包:
import sendgrid
两者的结合解决了问题。嗨,查理,很高兴你解决了问题。既然您在这里提供了解决方案,请将您的答案标记为“已接受”好吗?这对其他社区成员有益,谢谢~