我已经成功部署了Azure功能!但是失败了。
Result: Failure
Exception: ModuleNotFoundError: No module named 'CurrencyConversion'
Stack: File "/azure-functions-host/workers/python/3.7/LINUX/X64/azure_functions_worker/dispatcher.py", line 242, in _handle__function_load_request func_request.metadata.entry_point)
File "/azure-functions-host/workers/python/3.7/LINUX/X64/azure_functions_worker/loader.py", line 66, in load_function mod = importlib.import_module(fullmodname)
File "/usr/local/lib/python3.7/importlib/__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level)
File "/home/site/wwwroot/CC_Timer/__init__.py", line 3, in <module> import CurrencyConversion as cc
因此从上述错误中我们可以看出问题是将我的辅助函数从CurrencyConversion.py导入到 init .py中。我的代码如下:
import CurrencyConversion as cc
import os
import azure.functions as func
我的文件结构是这样的:
CCTimer
├── __init__.py
├── CurrencyConversion.py
任何人都可以详细说明上述问题吗?谢谢。
答案 0 :(得分:0)
在Python3中,禁止隐式相对导入。
您可以做的是from .module import name
。
以您的情况为例
from .CurrencyConversion import classname/funcname
您可以检查python3文档 https://docs.python.org/release/3.0.1/whatsnew/3.0.html#removed-syntax
答案 1 :(得分:0)
在官方文档中,有关于如何在功能代码中导入模块的详细说明:Import behavior。
您可以使用两个显式函数将模块导入功能代码中 相对引用和绝对引用。
在unit test下,您可以从文件夹中找到示例导入模块。
因此您可以使用from __app__.CCTimer import CurrencyConversion
进行导入。
注意:现在假设有一个bug with python 3.7,因此,如果您使用的是python 3.7,则显式相对方式会更好。