Python NameError 'xxx' 从另一个 .py 脚本执行 .py 脚本时未定义

Python NameError 'xxx' not defined when executing a .py script from another .py script

我有一个名为 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.pyschedule.py 时,它 returns 错误:

NameError: ("name 'np' is not defined", 'occurred at index 0')

之后,我添加了

import numpy as py

进入schedule.py解决上面的错误

但是解决了np not defined 错误后,执行main.py through 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...

有谁知道为什么会出现这个错误,我该如何解决?

注:

  1. 直接在cmd中运行宁main.py完全没有错误。所以我认为 npavg_util_l3mmain.py.

    中定义正确
  2. schedule.py的完整代码如上。它不包含 npavg_util_l3m 等变量。只有 main.py 使用变量。

我过去遇到过类似的问题,我只能告诉你 exec() 缓慢且不可预测,使用其他任何东西,我怀疑你会遇到同样的错误。如果您的代码太长而无法简单地导入,请尝试使用像 runpy 这样的替代方法。