python - 发布到 Azure 后执行 Azure App Function (Python) 失败。'没有命名模块'。在本地工作
问题描述
我有一个作为 Azure 应用程序函数创建的 python 函数。它可以在我的本地机器上正常工作,但是在成功发布后执行时失败且没有描述性错误。
最初,它因 500 内部服务器错误而失败,原因是:
Result: Failure
Exception: ModuleNotFoundError: No module named 'pandas'
Stack: File "/root/.pyenv/versions/3.6.8/lib/python3.6/site-packages/azure/functions_worker/dispatcher.py", line 218, in _handle__function_load_request
func_request.metadata.entry_point)
File "/root/.pyenv/versions/3.6.8/lib/python3.6/site-packages/azure/functions_worker/loader.py", line 66, in load_function
mod = importlib.import_module(fullmodname)
File "/root/.pyenv/versions/3.6.8/lib/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 941, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 678, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/home/site/wwwroot/generateGraph/__init__.py", line 2, in <module>
import pandas as pd
我认为这是我没有使用 --build-native-deps 开关发布。所以我用这个开关重新发布: (.env) C:\Temp\python_function>func azure functionapp publish httpGenGraph --build-native-deps
并且出版是成功的。现在,当我执行 Http Trigger 时,我又得到了同样的错误。有什么我想念的吗?我是 Python 新手,所以它可能不了解包装要求或其他东西。该函数在我的本地虚拟 python 环境中工作。
解决方案
弄清楚了。我需要将 pip freeze 的输出通过管道传输到 requirements.txt 文件。这允许在发布时正确引用包。
以供参考:
(.env) C:\Temp\python_function>pip freeze > requirements.txt
然后:
(.env) C:\Temp\python_function>func azure functionapp publish httpGenGraph --build-native-deps
推荐阅读
- php - NumberFormatter::PERCENT 带小数
- linux - 查找一个目录中缺少的文件在一秒钟内 - 需要忽略文件扩展名
- angular - net:ERR_FAILED - 我的应用程序(Ionic 4 / Angular 7)在尝试导出 Highcharts 时出错
- ios - 用 WKWebView 替换 UIWebView - 字体不适用
- c# - 在显示属性中使用 appsettings 键
- c# - 使用 HttpListener 的 Windows 桌面应用程序的 OAuth 2.0 授权
- android - 如何在单列中将小部件向右对齐?
- spring-webflux - 了解 webflux 中的背压
- android - 来自设备终端的 Android Shell 锁定设置命令
- c# - c#在字符串中保留最后3个字母