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.py
到 schedule.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...
有谁知道为什么会出现这个错误,我该如何解决?
注:
直接在cmd中运行宁main.py
完全没有错误。所以我认为 np
和 avg_util_l3m
在 main.py
.
中定义正确
schedule.py
的完整代码如上。它不包含 np
或 avg_util_l3m
等变量。只有 main.py
使用变量。
我过去遇到过类似的问题,我只能告诉你 exec() 缓慢且不可预测,使用其他任何东西,我怀疑你会遇到同样的错误。如果您的代码太长而无法简单地导入,请尝试使用像 runpy 这样的替代方法。
我有一个名为 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
时,它 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...
有谁知道为什么会出现这个错误,我该如何解决?
注:
直接在cmd中运行宁
中定义正确main.py
完全没有错误。所以我认为np
和avg_util_l3m
在main.py
.schedule.py
的完整代码如上。它不包含np
或avg_util_l3m
等变量。只有main.py
使用变量。
我过去遇到过类似的问题,我只能告诉你 exec() 缓慢且不可预测,使用其他任何东西,我怀疑你会遇到同样的错误。如果您的代码太长而无法简单地导入,请尝试使用像 runpy 这样的替代方法。