为什么我的Python脚本从SQL Server Agent运行时失败?

问题描述 投票:0回答:1

我有一个Python脚本,当我在IDE中运行它时,它可以正常工作。如果从命令行执行,则必须位于其所在的目录中才能正常运行。如果我尝试将其作为代理作业或在SSIS中与“执行流程任务”一起运行,它将失败。

代理程序作业中的脚本看起来像这样:

py E:\Opt\AppDirectory\foo.py
SET EXITCODE = %ERRORLEVEL% 
IF %EXITCODE% EQ 0 ( 
   REM Script Ran Sucessfully
   EXIT 0
)
IF %EXITCODE% EQ 1 (
    REM Script Error
    EXIT 1
)

当我运行它或在SSIS中运行时,我得到:

Traceback (most recent call last):
  File "E:\Opt\AppDirectory\foo.py", line 76, in <module>
    encoder = jl.load('model.joblib')
  File "C:\ProgramData\Anaconda3\lib\site-packages\joblib\numpy_pickle.py", line
 590, in load
    with open(filename, 'rb') as f:
FileNotFoundError: [Errno 2] No such file or directory: 'model.joblib'

model.joblib与foo.py存放在完全相同的目录中。当它说找不到文件时真的很奇怪,但是我正盯着它。

该工作可以找到foo.py。为什么似乎找不到model.joblib?

python sql-server batch-file sql-server-2005 sql-server-agent
1个回答
0
投票

这不是答案,但我将发布我目前所做的事情。这是为最后期限的客户准备的,所以我只是拍了一些东西。我将在几周后发布更多的深度分析。

[第一件事是我需要有一个指向model.joblib的绝对路径。那是我的坏事。我通常在Jupyter Lab工作,却忘了那是必要的。

但是,这不能完全解决问题。作业运行了,但是就像跳过了执行奇怪的脚本一样。最终的解决方案是在SSIS中使用“执行流程任务”来运行脚本,然后将代理作业从CmdExec更改为SSIS包,然后一切正常。

© www.soinside.com 2019 - 2024. All rights reserved.