SQL Server Agent运行Python代码报No module named 'azure'错误如何解决
问题排查解决指南
核心原因
该报错本质是SQL Server Agent作业的执行环境与手动测试用的命令行环境不一致,作业调用的Python环境下未安装azure相关依赖。
具体排查步骤
- 确认作业使用的Python解释器路径
在你现有代码的最开头添加如下代码,重新执行SQL Agent作业,查看输出的Python路径:
手动打开命令提示符执行import sys print(sys.executable)where python,对比两个路径是否匹配。 - 给对应环境安装依赖
如果路径不一致,复制作业输出的Python解释器绝对路径,使用绝对路径调用pip安装对应版本的依赖包:<替换为作业输出的Python绝对路径> -m pip install azure-storage-blob==1.5.0 azure-common==1.1.27 azure-storage-common==1.4.2 - 校验Python包搜索路径
如果路径一致仍报错,在代码开头打印包搜索路径,对比手动运行和作业运行的输出差异:
若作业运行的输出中没有azure包的安装路径,可在导入azure相关模块前手动追加路径,路径可通过命令import sys print(sys.path)pip show azure-storage-blob返回的Location字段获取:import sys sys.path.append("替换为你查到的azure包父目录路径") - 确认权限配置
核对SQL Agent作业映射的用户对azure包的安装目录拥有读取和执行权限,可右键打开安装目录的属性面板,在安全选项卡中校验权限配置。 - 修正代码冗余配置
BlockBlobService初始化时同时传入账号密钥和连接字符串属于冗余配置,仅保留其中一个参数即可,避免引发认证异常。
补充说明
你当前使用的azure-storage-blob 1.5.0属于旧版v2 SDK,官方最新的v12版本SDK已移除BlockBlobService类,后续如果升级SDK需要同步调整代码逻辑。
内容的提问来源于stack exchange,提问作者Mr Paul
相关产品推荐
相关产品推荐

