【发布时间】:2017-04-19 00:27:58
【问题描述】:
考虑以下 Python (2.7.9) 代码:
test.py
import test2
import time
while True:
print test2.getData()
time.sleep(1)
test2.py
def getData ():
return [1,2,3]
运行:
python -u test.py
如果我在 test.py 运行时修改 test2.py(例如,将其更改为 return [4,5,6]),test.py 不变。这并不意外。
但是,我希望对 test2.py 的更改能够反映在输出中。有没有办法做到这一点?例如。像每次调用 test2.getData() 时重新解析 test2.py 之类的东西?
其他尝试过的东西,来自 cmets:
- 将
import test2移动到循环中。 - 在测试运行时删除 test2.pyc(
import进出循环)。
【问题讨论】:
-
我假设您的代码在运行之前已转换为字节码,因此在执行过程中不会反映对任何文件的修改
-
也许你可以尝试将 import 语句移动到循环中,但你为什么想要这个似乎仍然很奇怪
-
@cricket_007 test2.pyc 已生成,虽然在修改 test2.py 后删除它对输出没有影响。
-
嗯。值得一试。无论如何 - 是的,读取文件可能是唯一的选择。或者以某种方式缓存在内存中,比如 Redis 或 Sqlite 内存表
-
@cricket_007 我终于想通了;只需要改进我的搜索关键字。这是
reload(test2)。很简单。虽然为时已晚,因为我最终只是将数据存储在 CSV 文件中并解析它(这也很容易)。
标签: python python-2.7 python-import