首页 > 解决方案 > 无法在 Azure 函数中运行 python 代码

问题描述

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

我尝试from blobquickstartv12 import load在我的 blobquickstartv12.py 代码中使用 where load is a function,但这给了我异常:ModuleNotFoundError: No module named 'blobquickstartv12'

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

这是我在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.xazure-functionsazure-blob-storage

解决方案


更新:

请检查结构。在我这边没有问题。该代码可以很好地导入 blobquickstartv12。

在此处输入图像描述

在此处输入图像描述

这是天蓝色函数的结构:

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")

它在我这边工作得很好。

这是结构:

在此处输入图像描述


推荐阅读