我正在使用linux python shell,每次我对导入的文件进行更改时我都需要重新启动shell(我尝试重新导入文件,但没有反映出更改)
我在名为handlers.py
的文件中有一个定义def testme():
print "Hello I am here"
我在python shell中导入文件
>> import handlers as a
>> a.testme()
>> "Hello I am here"
然后我将print语句更改为"您好我在那里",重新导入处理程序,它没有显示更改?
将Python 2.7与Mint 17.1一起使用
答案 0 :(得分:6)
您需要明确reload
模块,如:
import lib # first import
# later ....
import imp
imp.reload(lib) # lib being the module which was imported before
请注意,imp
模块正在等待折旧,而有利于importlib
,而在python 3.4中应该使用:importlib.reload
。
答案 1 :(得分:1)
每次进行更改时都应该使用重新加载,然后再次导入:
reload( handlers ) import handlers a a
答案 2 :(得分:1)
作为reload
内的替代答案,您可以使用
watchdog
。
一个简单的程序,它使用监视程序监视指定为命令行参数的目录并记录生成的事件:
来自网站
支持的平台
Linux 2.6(inotify)
Mac OS X(FSEvents,kqueue)
FreeBSD / BSD(kqueue)
Windows(带有I / O完成端口的ReadDirectoryChangesW; ReadDirectoryChangesW工作线程)
独立于操作系统(轮询磁盘以查找目录快照并定期进行比较;慢速且不推荐)