【问题标题】:Unable to run python code in Azure function无法在 Azure 函数中运行 python 代码
【发布时间】:2020-08-26 11:46:45
【问题描述】:

我在同一个 Azure 函数“Test-v3”中有 init.py 和 blobquickstartv12.py。虽然 init.py 是一个 blob 触发器,但“blobquickstartv12.py”具有我想要运行的 python 代码。我能够在 blobquickstartv12.py 中运行代码的唯一方法是将整个代码粘贴到 init.py 的 main() 函数中。

我尝试使用 from blobquickstartv12 import load,其中 load 是我的 blobquickstartv12.py 代码中的一个函数,但这给了我异常:ModuleNotFoundError: No module named 'blobquickstartv12'

谁能告诉我如何从 init.py 中调用我的自定义代码 这是我的 Azure Function 的结构:

这是我在 init.py 中的代码:

import azure.functions as func
import pandas as pd
import numpy as np
from datetime import datetime
from pandas import ExcelFile
from pandas import ExcelWriter
from datetime import datetime, timedelta
from azure.storage.blob import BlockBlobService
import pyodbc
import sys
import os
from io import StringIO
import pkgutil
from . import blobquickstartv12

def main(myblob: func.InputStream):
    logging.info(f"Python blob trigger function processed blob \n"
                 f"Name: {myblob.name}\n"
                 f"Blob Size: {myblob.length} bytes")
load=blobquickstartv12.load() 

这是我的 blobquickstart.py 代码:

class load:

    #CODE FOR CONNECTING TO THE SQL DATABASE
    SERVER = 'xxxxxx.database.windows.net'
    DATABASE = 'XYZ'
    username = 'USERNAME'
    pwd = 'PASSWORD'
    driver= '{ODBC Driver 17 for SQL Server}'
    cnxn = pyodbc.connect('DRIVER='+driver+';SERVER='+SERVER+';PORT=1433;DATABASE='+DATABASE+';UID='+username+';PWD='+ pwd)
    cursor = cnxn.cursor()
    print("Connected to Azure SQL")
    #sqlcommand = ("INSERT INTO Stage.File(File_ID,File_type) VALUES (1235,'D')")
    Curr_dt = datetime.now()

    BLOB_STORAGEACCOUNTNAME="blobstorage"
    BLOB_STORAGEACCOUNTKEY="AccountKey"
    BLOBNAME="BlobName"
    CONTAINERNAME= "ContainerName"

【问题讨论】:

标签: python-3.x azure-functions azure-blob-storage


【解决方案1】:

更新:

请检查结构。在我这边没有问题。代码可以正常导入blobquickstartv12。

这是azure函数的结构:

https://docs.microsoft.com/en-us/azure/azure-functions/functions-reference-python#folder-structure

这是如何导入的文档:

https://docs.microsoft.com/en-us/azure/azure-functions/functions-reference-python#import-behavior

原答案:

模块中的导入模块应该是这样的:

例如,我有一个 dog.py,我想使用它。

这是 dog.py:

class Dog:
    def __init__(self,name):
        super().__init__()
        self.name = name
    def showdog(self):
        print("This is a dog!")

_init_.py,你应该使用这个:

from . import dog
mydog = dog.Dog("Woodie")

对我来说效果很好。

这是结构:

【讨论】:

  • 我收到错误 ImportError: cannot import name 'blobquickstartv12' from 'main' (init.py)
  • 你能告诉我应该如何构建我的代码以从 Azure Function 中的 init.py 调用 blobquickstartv12 吗?
  • @RahulBanerjee 也许你可以检查一下结构。这是如何导入的官方文档,您可以尝试其他方式。 docs.microsoft.com/en-us/azure/azure-functions/… 但在我这边,from . import blobquickstartv12 没问题。
猜你喜欢
  • 1970-01-01
  • 2014-02-08
  • 2019-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-15
  • 2021-10-22
  • 1970-01-01
相关资源
最近更新 更多