SQL Server Agent调用Python脚本出现googleapiclient模块未找到错误问询
问题根因
- Python解释器版本不匹配:你手动执行时调用的Python解释器和SQL Server Agent调用的不属于同一个版本。你安装依赖的是32位Python3.7(对应路径
C:\Program Files (x86)\Python37-32\site-packages),如果SQL Agent作业触发的是64位Python解释器,会默认搜索64位Python的site-packages目录,自然找不到32位路径下的第三方库。你可以在脚本开头加入代码import sys;print(sys.executable),分别在本地命令行和SQL Agent作业中运行,对比打印出的Python解释器路径即可验证该问题。 - 服务环境变量未加载:SQL Server Agent服务启动时加载的环境变量,和你交互式登录账号的运行时环境变量存在差异。哪怕你已经在系统Path中添加了依赖路径,只要SQL Agent服务没有重启加载最新配置,或者运行上下文的Path配置和你登录时的不一致,就会出现找不到模块的问题。
- 依赖安装范围限制:如果当初执行pip安装时加了
--user参数,依赖会被安装到当前用户的个人目录下的site-packages,而非系统全局目录。就算SQL作业用的是你本人的管理员账号,服务运行的上下文也可能无法读取用户级别的安装包。
可行解决方案
- 指定完整解释器路径执行:在SQL Agent作业的执行命令中,直接写你安装了依赖的Python的绝对路径,不要用简写的
python.exe,示例命令如下:
"C:\Program Files (x86)\Python37-32\python.exe" C:\GoogleAPI\main.py
- 脚本内强制添加模块搜索路径:在脚本最开头、导入其他第三方库之前,加入以下代码,强制把依赖所在路径加入Python的模块搜索列表:
import sys sys.path.append("C:\Program Files (x86)\Python37-32\site-packages")
- 全局重装对应依赖:用管理员权限打开命令行,执行以下命令,将依赖重装到对应Python版本的全局
site-packages目录:
"C:\Program Files (x86)\Python37-32\python.exe" -m pip install google-api-python-client
- 重启SQL Server Agent服务:如果是环境变量未生效的问题,重启SQL Server Agent服务即可加载最新的系统环境变量配置。
内容的提问来源于stack exchange,提问作者Mr Paul
相关产品推荐
相关产品推荐

