Azure関数とヘルパー関数

2020-03-26 python azure-functions

Azure Functionのデプロイに成功しました!しかし、それは失敗します。

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

誰でも上記の問題について詳しく説明できますか?ありがとう。

Answers

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

公式ドキュメントには、関数コードにモジュールをインポートする方法に関する詳細な説明があります: インポート動作

両方の明示的を使用して関数コードにモジュールをインポートできます 相対および絶対参照。

単体テストでは、フォルダーからサンプルのインポートモジュールを見つけることができます。

したがって、 from __app__.CCTimer import CurrencyConversionインポートできます。

注:今のところ、python 3.7バグがあると想定しているため、python 3.7を使用している場合は、明示的な相対方法の方が適しています。

Related