我有一个名为 schedule.py 的脚本:
# Script to schedule and trigger batch run every day of month at 6.30p.m.
from datetime import date
import time
import schedule
def job():
exec(open("main.py").read())
print('Batch run completed')
schedule.every().day.at("18:30").do(job)
while True:
schedule.run_pending()
time.sleep(1)
此 schedule.py
将执行另一个 Python 脚本 main.py
。
main.py
用于处理数据,所以涉及到pandas、numpy。
当我直接运行 main.py
时,根本没有错误。但是当我尝试通过 main.py
运行 schedule.py
时,它返回错误:
NameError: ("name 'np' is not defined", 'occurred at index 0')
在那之后,我添加了
import numpy as py
进入schedule.py
解决上面的错误。
但是解决了np
未定义错误后,通过main.py
执行schedule.py
时又出现一个错误:
NameError: name 'avg_util_l3m' is not defined
这个变量avg_util_l3m
是在main.py
中使用的一个变量。 main.py
中使用变量的部分如下:
# lots of code...
avg_util_l3m = joined_df['AverageUtilizationL3M']
avg_util_l3m = joined_df['ProdType'].apply(lambda x: avg_util_l3m if x != 'Non-Revolving' else -9999)
# lots of code...
有谁知道为什么会发生这个错误,我该如何解决?
注意:
直接在 cmd 中运行 main.py
时完全没有错误。所以我认为 np
和 avg_util_l3m
在 main.py
中的定义是正确的。
schedule.py
的完整代码如上。它不包含 np
或 avg_util_l3m
之类的变量。只有 main.py
使用变量。
答案 0 :(得分:1)
我过去遇到过类似的问题,我只能告诉你 exec() 很慢且不可预测,使用其他任何东西,我怀疑你会遇到同样的错误。如果您的代码太长而无法简单导入,请尝试使用 runpy 等替代方法。